题解写的是不是有问题?
void add(rg rt,rg l,rg r,rg pos) // 把某一个并查集联通块中每一个点的深度加一
{
if(l==r)
{
++deep[rt];
return;
}
rg mid=l+r>>1;
if(pos<=mid) add(lson,l,mid,pos);
else add(rson,mid+1,r,pos);
}
update(Ed[i],Ed[i-1],1,n,fa[f1],fa[f2]); // 把f1
if(deep[f1]==deep[f2]) add(Ed[i],1,n,fa[f2]);
这里他是在这个版本的ed直接把深度修改,而你这次深度修改也会影响到上个版本的深度啊?!