子树训练值(subtree)

题目描述

DAMON THRONE\text{DAMON THRONE} 有一棵训练树,共有 nn 个节点,编号为 11nn

节点 11 是根节点。

ii 个节点有一个训练值 aia_i

树上有 n1n-1 条边,每条边连接两个节点,保证所有节点都连通。

对于每个节点 uu,定义它的 子树训练值 为:

uu

的子树中所有节点训练值之和。

也就是说,如果把整棵树以 11 为根,那么节点 uu 的子树包括 uu 自己以及所有后代节点。

现在请你求出所有节点中,子树训练值最大的节点编号以及这个最大子树训练值。

如果有多个节点的子树训练值相同且都是最大值,输出编号最小的节点。

输入格式

第一行包含一个整数 nn,表示节点数量。

第二行包含 nn 个整数:a1,a2,,ana_1,a_2,\ldots,a_n,表示每个节点的训练值。

接下来 n1n-1 行,每行包含两个整数 u,vu,v,表示节点 uu 和节点 vv 之间有一条边。

输出格式

输出一行两个整数,分别表示:

  • 子树训练值最大的节点编号;
  • 最大子树训练值。

输入输出样例 #1

输入 #1

7
3 2 5 4 1 6 2
1 2
1 3
2 4
2 5
3 6
3 7

输出 #1

1 23

样例解释 #1

11 为根时,整棵树都是节点 11 的子树。

节点 11 的子树训练值为:

3+2+5+4+1+6+2=233+2+5+4+1+6+2=23

可以证明这是所有节点中最大的子树训练值。

输入输出样例 #2

输入 #2

5
-5 10 -2 3 4
1 2
1 3
2 4
2 5

输出 #2

2 17

样例解释 #2

11 为根时,节点 22 的子树包含节点:

2,4,52,4,5

它的子树训练值为:

10+3+4=1710+3+4=17

这是最大的子树训练值。

数据范围与约定

对于所有测试数据,保证:

$$1 \le n \le 2\times 10^5\quad -10^9 \le a_i \le 10^9 \quad 1 \le u,v \le n,\quad u\ne v $$

并保证输入的边构成一棵树。

测试点 分值 nn aia_i 特殊性质
121\sim 2 1010 100\le 100 1000\le 1000
343\sim 4 2020 2000\le 2000 109\le 10^9 A\text{A}
565\sim 6 105\le 10^5 B\text{B}
787\sim 8 C\text{C}
9109\sim 10 3030 2×105\le 2\times 10^5

特殊性质 A\text{A}:保证所有 aia_i 都为正数。

特殊性质 B\text{B}:保证树是一条链,即边为 12,23,,n1n1-2,2-3,\ldots,n-1-n

特殊性质 C\text{C}:保证所有 aia_i 都相同。