警示后人,如果你用链式前向星存图且10分
查看原帖
警示后人,如果你用链式前向星存图且10分
536337
eb0ycn楼主2024/6/7 18:17

注意到一操作。

因为我们建了双向边,所以他给的边的编号不一定是树边。

比如说我是这样建的边:

nxt[++tot]=head[u],head[u]=tot,to[tot]=v,w[tot]=W;
nxt[++tot]=head[v],head[v]=tot,to[tot]=u,w[tot]=W;

那对于一条无向边,树边可能是 2k−12k-1,可能是 2k2k。操作时要特判一下。

怎么特判?树剖的时候我们不是求出了每个点的父亲了吗?那就用父亲判,看连续的两条边的终点的祖先关系。

if(op[1]=='h'){
	scanf("%d%d",&u,&v);
	if(fa[to[u<<1^1]]==to[u<<1])u=u<<1^1;
	else u<<=1;
	update1(1,n,1,dfn[to[u]],dfn[to[u]],v);
}
2024/6/7 18:17
加载中...