voidadd(int a, int b){ e[idx] = b, ne[idx] = h[a], h[a] = idx++; }
intdfs(int u){ st[u] = true; //标记一下,已经被搜过了 int sum = 1, res = 0; for(int i = h[u]; i != -1; i = ne[i]){ int j = e[i]; if(!st[j]) { int s = dfs(j); // 表示当前子树的大小 res = max(res,s); sum += s; } } res = max(res, n-sum); ans = min(ans,res); return sum; }
intmain(){ cin >> n; memset(h, -1, sizeof h); for(int i = 0; i < n - 1; i++){ int a,b; cin >> a >> b; add(a,b),add(b,a); } dfs(1); cout << ans << endl; return0; }