void clear(int u, int f){ buf[dep[u]] -= 1; for(auto v : g[u]){ if(v == f)continue; clear(v, u); } }
if(!flag){ if(maxn <= sqrt(n)){ for(int i = 1; i <= maxn; ++ i){ buf[i] = 0; } }else { clear(u, f); } }
代码链接