void dfs(int x, int fa) {
siz[x] = 1;
f[x] = fa;
dep[x] = dep[fa] + 1;//*
for (int i = 0; i < p[x].size(); i++) {
if (p[x][i] != f[x]) {
// dep[p[x][i]] = dep[x] + 1;
dfs(p[x][i], x);
siz[x] += siz[p[x][i]];
if (siz[p[x][i]] > siz[son[x]]) {
son[x] = p[x][i];
}
}
}
return;
}
//上面为重链剖分求深度和子树大小的第一遍dfs,
//我如果用上面的代码的话它就是对的,
//但是如果把带星号的那一行去掉,改成被注释掉的那一行,它就是错的,
//为什么啊,求大佬指点