RT,本蒟蒻想不通
void dfs1(int u){
soncnt[u] = 1;
for (int i = hd[u]; i;i=e[i].nt){
v = e[i].to;
if(v==fa[u]){
continue;
}
fa[v] = u;
dep[v] = dep[u] + 1;
dfs1(v);
soncnt[u] += soncnt[v];
if(soncnt[son[u]]<soncnt[v]){
son[u] = v;
}
top[v] = v;
}
top[son[u]] = top[u];
}