1 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 5; vector<int> g[maxn]; int n, sz[maxn], ms[maxn], ans = 1e9; void dfs(int u, int p) { // u: 当前节点;p: 父节点 sz[u] = 1; for (auto v : g[u]) if (v != p) dfs(v, u), sz[u] += sz[v], ms[u] = max(ms[u], sz[v]); ms[u] = max(ms[u], n - sz[u]); ans = min(ans, ms[u]); } int main() { scanf("%d", &n); for (int i = 1; i < n; i++) { int u, v; scanf("%d%d", &u, &v); g[u].push_back(v); g[v].push_back(u); } dfs(1, -1); for (int i = 1; i <= n; i++) if (ms[i] == ans) printf("%d ", i); return 0; }
- 1
信息
- ID
- 13
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 13
- 已通过
- 4
- 上传者