根据其最大子树大小不会超过树大小的一半来写,我感觉也很好写啊,但是做题看题解几乎很少有人这么写?
void dfs(int now,int fa){
siz[now]=1;
for(auto i:p[now]){
if(i==fa) continue;
dfs(i,now);
mx[now]=max(mx[now],siz[i]);
siz[now]+=siz[i];
}
mx[now]=max(mx[now],n-siz[now]);
if(mx[now]<=n/2) zx.push_back(now);
}
可能算是小调查:你们怎么写树的重心?