java_day20
目标:Java web开发
问题树的重心
import java.util.*;
public class Main {
static final int N=(int)1e5+10,M=N<<1,INF=(int)1e9;
static int n,idx,min=INF;
static int[] h=new int[N],e=new int[M],ne=new int[M];
static boolean[] status=new boolean[N];
static Scanner sc=new Scanner(System.in);
static void add(int u,int v) {
e[idx]=v;
ne[idx]=h[u];
h[u]=idx++;
}
static int dfs(int u){
status[u]=true;
int s,sum=1,max=-INF;
for (int i=h[u];i!=-1;i=ne[i]){
if(status[e[i]]) continue;
s=dfs(e[i]);
max=Math.max(max,s);
sum+=s;
}
max=Math.max(max,n-sum);
min=Math.min(min,max);
return sum;
}
public static void main(String[] args){
n=sc.nextInt();
for(int i=1;i<=n;++i) h[i]=-1;
for(int i=1;i<n;++i){
int u=sc.nextInt(),v=sc.nextInt();
add(u,v);add(v,u);
}
dfs(1);
System.out.print(min);
}
}

浙公网安备 33010602011771号