这里是蒟弱的问题: dfs重构父亲时,不能按照点的深度赋父亲,而要保证2i>n2^i>n2i>n,
F(i,1,20)if((1<<i)<=deep[x])fa[x][i]=fa[fa[x][i-1]][i-1];
上面是错误的, 下面是正确的。
F(i,1,20)fa[x][i]=fa[fa[x][i-1]][i-1];
原因是deep数组会因为连边而改变。