题目描述:给定一棵树,每个节点有一个权值。定义树的重心为使得删除该节点后,各个子树的节点数不超过总节点数一半的节点(如果有多个节点满足条件,则选择权值最小的节点)。请编写一个程序,找到给定树的重心。
输入格式:
第一行包含一个整数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后,得到的树中每个子树的节点数均不超过总节点数的一半。