求助
  • 板块灌水区
  • 楼主Aussicer
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/3/3 17:19
  • 上次更新2024/3/3 17:35:37
查看原帖
求助
1061023
Aussicer楼主2024/3/3 17:19

题目描述:给定一棵树,每个节点有一个权值。定义树的重心为使得删除该节点后,各个子树的节点数不超过总节点数一半的节点(如果有多个节点满足条件,则选择权值最小的节点)。请编写一个程序,找到给定树的重心。

输入格式: 第一行包含一个整数n,表示树的节点数(1 ≤ n ≤ 10^5)。 接下来n行,每行包含一个整数,表示对应节点的权值。第i行的整数表示第i个节点的权值,权值均为正整数且不超过10^9。 接下来n-1行,每行包含两个整数u, v,表示树中连接的两个节点u和v。

输出格式: 输出一个整数,表示树的重心。

示例输入: 5 1 2 3 4 5 1 2 1 3 2 4 2 5

示例输出: 2

说明:对于给定示例,树的重心为节点2,删除节点2后,得到的树中每个子树的节点数均不超过总节点数的一半。

2024/3/3 17:19
加载中...