#zyk2C. 植树(tree)

植树(tree)

附加文件

题目描述

五个代表甲乙丙丁戊在种一棵树。 已知这棵树由 nn 个点组成,每个点有权重 wiw_i,以及到树根的距离 did_i。规定 d1=0d_1=0

  • 甲说:“我厌恶点对 (i,j)(i,j) 满足 iijj 的祖先且 wi>wjw_i > w_j
  • 乙说:“我厌恶点对 (i,j)(i,j) 满足 iijj 的祖先且 wi<wjw_i < w_j
  • 丙说:“我厌恶点对 (i,j)(i,j) 满足 i<ji < ji,ji,j 均不是另一个点的祖先”
  • 丁说:“我厌恶点距离根太远”
  • 什么都没说

现在甲丙丁选择点集 AA,乙戊选择 AA 的补集 BB

规定点集 XX 的厌恶值为 D(X)D(X),二元运算 xyx \circ y 表示 xx 是否被 yy 所厌恶,则有:

$$D(A) = \sum_{i \in A} \sum_{j \in A} [(i, j) \circ \text{甲} \lor (i, j) \circ \text{丙}] + \sum_{i \in A} d_i$$$$D(B) = \sum_{i \in B} \sum_{j \in B} [(i, j) \circ \text{乙}]$$

现在要你对于 B=0,1,,n|B|=0, 1, \dots, n 依次输出 D(A)+D(B)D(A)+D(B) 的最小值。

输入格式

第一行为一个整数 nn,表示点数。

第二行几个整数 wiw_i,表示每个树节点的权重。

接下来 n1n-1 行每行两个整数 u,vu,v 表示一条树边。

输出格式

n+1n+1 行,第 ii 行一个整数,表示当 B=i1|B|=i-1D(A)+D(B)D(A)+D(B) 的最小值。

样例

样例输入 1

4
4 1 2 3
1 2
2 3
2 4

样例输出 1

9
5
2
1
2

数据范围与约定

对于 100%100\% 的数据范围,1n,wi5×1051\le n,w_i\le 5\times 10^5

每个测试包的详细限制如下:

测试包编号 nn 特殊性质 分值
1 20\le 20 12
2 100\le 100 3
3 5000\le 5000 6
4 5×105\le 5 \times 10^5 di=[i>1]d_i=[i>1] 10
5 wi=1w_i=1 12
6 di=i1d_i=i-1 14
7 43