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