void dfs3(int u, int f){
maxdeep[u] = d[u];
for(int v : children[u]){
if(v == f) continue;
d[v] = d[u] + 1;
dfs3(v, u);
maxdeep[v] = max(maxdeep[v], maxdeep[u]);
}
}
看一下取最大值是否赋值错误
void dfs3(int u, int f){
maxdeep[u] = d[u];
for(int v : children[u]){
if(v == f) continue;
d[v] = d[u] + 1;
dfs3(v, u);
maxdeep[u] = max(maxdeep[v], maxdeep[u]);
}
}