|
|
|
@ -45,10 +45,16 @@ signed main() {
|
|
|
|
|
cin >> a >> b;
|
|
|
|
|
add(a, b), add(b, a);
|
|
|
|
|
}
|
|
|
|
|
// 第一次dfs,以子孙节点信息更新父节点的统计信息,统计信息包括:以u为根的子树中节点数个sz[u],每个节点可以获取到的权值f[u]
|
|
|
|
|
dfs1(1, 0);
|
|
|
|
|
// f[i]:以1为根时的, 以i为根的子树可以获得的最大权值
|
|
|
|
|
// g[i]:不管以谁为根,以i为根的子树可以获得的最大权值,也就是最终的结果存储数组
|
|
|
|
|
g[1] = f[1];
|
|
|
|
|
dfs2(1, 0);
|
|
|
|
|
|
|
|
|
|
// 遍历一遍历,找出到底以谁为根可以获取到权值的最大值,最大值是多少
|
|
|
|
|
int ans = 0;
|
|
|
|
|
for (int i = 1; i <= n; i++) ans = max(ans, g[i]);
|
|
|
|
|
// 输出答案
|
|
|
|
|
cout << ans << endl;
|
|
|
|
|
}
|