問題文
AtCoder 王国は N 個の街と N−1 個の道路からなります。
街には 街 1, 街 2, dots, 街 N と番号がついています。道路にも同様に 道路 1, 道路 2, dots, 道路 N−1 と番号が付いています。 道路 i は街 Ai と Bi を双方向に結んでいて、通過するときに Ci の通行料がかかります。すべての異なる街の組 (i,j) に対して、道路を経由して街 i から街 j に行くことができます。
今、列 D=(D1,D2,dots,DN) が与えられます。 Di は街 i を観光するときにかかる費用です。 このとき、街 i から街 j への旅費 Ei,j を、(同じ道を 2 回以上使わずに街 i から街 j へ向かうときにかかる通行料の和) に Dj を足したものとして定めます。
- 厳密に言い換えると、i−j 間の最短パスを i=p0,p1,dots,pk−1,pk=j として、街 pl と街 pl+1 を結ぶ道路の通行料を cl と置いたときに $E_{i,j} = D_j + \\displaystyle\\sum_{l=0}^{k-1} c_l$ と定義します。
すべての i に対して、街 i を始点として他の街へ旅行したときにありえる旅費の最大値を求めてください。
- 厳密に言い換えると、すべての i に対して max1leqjleqN,jneqiEi,j を求めてください。
制約
- 2leqNleq2times105
- 1leqAileqN (1leqileqN−1)
- 1leqBileqN (1leqileqN−1)
- 1leqCileq109 (1leqileqN−1)
- 1leqDileq109 (1leqileqN)
- 整数の組 (i,j) が 1leqiltjleqN を満たすならば、街 i から街 j へいくつかの道路を通ることで移動できる。
- 入力はすべて整数である。
入力
入力は以下の形式で標準入力から与えられる。
N
A1 B1 C1
A2 B2 C2
vdots
AN−1 BN−1 CN−1
D1 D2 dots DN
出力
N 行出力せよ。i 行目には $\\displaystyle \\max_{1 \\leq j \\leq N, j \\neq i} E_{i,j}$ を出力せよ。
入力例 1
3
1 2 2
2 3 3
1 2 3
出力例 1
8
6
6
すべての街の順序つき組 (i,j) に対して Ei,j を計算すると次のようになります。
- E1,2=2+2=4
- E1,3=5+3=8
- E2,1=2+1=3
- E2,3=3+3=6
- E3,1=5+1=6
- E3,2=3+2=5
入力例 2
6
1 2 3
1 3 1
1 4 4
1 5 1
1 6 5
9 2 6 5 3 100
出力例 2
105
108
106
109
106
14
入力例 3
6
1 2 1000000000
2 3 1000000000
3 4 1000000000
4 5 1000000000
5 6 1000000000
1 2 3 4 5 6
出力例 3
5000000006
4000000006
3000000006
3000000001
4000000001
5000000001