在建立全局平衡二叉树的过程中,我是使用如下的代码对重链上每个点的轻儿子进行递归建树的,在第一遍 DFS 时将 f[x] 置为了 x 原树上的父亲,而后又复用了 f[x] 作为全局平衡二叉树上每个点的父亲。由于我没有清空全局平衡二叉树的根的 f[x] ,导致形成环,后 21 个点全部 TLE 。
do{
for(int v1=head[x];v1!=-1;v1=ae[v1].nxt){
int v=ae[v1].to;
if(v==f[x]||v==hson[x])continue;
int t=dfs2(v);
f[t]=x;
ins(x,t);
}
getw(x);
}while(x=hson[x]);