void dfs1(int x){ for(int i=head[x];i;i=edge[i].next){ int v=edge[i].v; if(v==fa[x])continue; dep[v]=dep[x]+1; fa[v]=g[v][0]=x; dfs1(v); } for(int i=1;i<=20;i++)g[x][i]=g[g[x][i-1]][i-1]; }
为什么这个过不了,调换一下顺序就过了呢?