#35. [R6E]树上求和

[R6E]树上求和

时空限制

1S/512M

题目描述

给定一棵由 nn 个节点和 n1n-1 条无向边组成的树,第 ii 个节点的权值为 aia_i

定义一条路径的长度为路径上边的长度之和,定义节点 ii 和节点 jj 的距离 dis(i,j)\text{dis}(i,j)iijj 之间最短路径的长度。

请你分别对 p=1,2,,np=1,2,\dots,n,计算出 i=1nai×dis(p,i)\sum_{i=1}^na_i\times \text{dis}(p,i),即 pp 到每个节点的距离乘上该节点权值的和。

格式

输入格式

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

第二行包含 nn 个整数 aia_i,分别表示每个节点的权值。

接下来 n1n-1 行每行包含三个整数 ui,vi,liu_i,v_i,l_i,表示节点 uiu_i 和节点 viv_i 之间有一条长度为 lil_i 的无向边。数据保证这 n1n-1 条边构成一棵 nn 个节点的树。

输出格式

输出 nn 行,每行一个整数,第 ii 个整数为 p=ip=i 时的答案。

样例

样例输入 #1

5
5 4 3 2 1
1 2 3
3 2 1
4 3 3
3 5 5

样例输出 #1

47
32
35
68
100

样例解释 #1

p=1p=1 时,每个节点和 pp 的距离分别是 0,3,4,7,90,3,4,7,9,答案为 0×5+3×4+4×3+7×2+9×1=470\times5+3\times4+4\times3+7\times2+9\times1=47

p=2p=2 时,每个节点和 pp 的距离分别是 3,0,1,4,63,0,1,4,6,答案为 3×5+0×4+1×3+4×2+6×1=323\times5+0\times4+1\times3+4\times2+6\times1=32

p=3p=3 时,每个节点和 pp 的距离分别是 4,1,0,3,54,1,0,3,5,答案为 4×5+1×4+0×3+3×2+5×1=354\times5+1\times4+0\times3+3\times2+5\times1=35

p=4p=4 时,每个节点和 pp 的距离分别是 7,4,3,0,87,4,3,0,8,答案为 7×5+4×4+3×3+0×2+8×1=687\times5+4\times4+3\times3+0\times2+8\times1=68

p=5p=5 时,每个节点和 pp 的距离分别是 9,6,5,8,09,6,5,8,0,答案为 9×5+6×4+5×3+8×2+0×1=1009\times5+6\times4+5\times3+8\times2+0\times1=100

数据规模

对于 40%40\% 的数据, n1000n\leq 1000

另有 20%20\% 的数据, ai=1a_i=1li=1l_i=1

对于 100%100\% 的数据, 1n1051\leq n\leq 10^51ai1041\leq a_i\leq 10^41ui,vin1\leq u_i,v_i\leq n1li1041\leq l_i\leq 10^4