树的重心
title: 树的重心
categories:
- ICPC
tags:
- null
abbrlink: a5c898a
date: 2023-03-13 00:00:00
const int N=100010;
int n, a, b;
vector<int> e[N];//用vector作邻接表
int siz[N], pos, ans=1e9;
void dfs(int x, int fa){
siz[x]=1;
int mx=0;
for(auto y : e[x]){
if(y == fa) continue;
dfs(y, x);//先搜完,再统计答案
siz[x] += siz[y];
mx=max(mx, siz[y]);
}
mx=max(mx, n-siz[x]);
//维护了重心是pos
if(mx<ans) ans=mx,pos=x;
}
int main(){
scanf("%d", &n);
for(int i=1;i<n;i++){
scanf("%d%d",&a,&b);
e[a].push_back(b);
e[b].push_back(a);
}
dfs(1, 0);
printf("%d\n",ans);
return 0;
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 爱飞鱼的blog!