题目描述
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−1 cl と定義します。
すべての i に対して、街 i を始点として他の街へ旅行したときにありえる旅費の最大値を求めてください。
- 厳密に言い換えると、すべての i に対して max1 ≤ j ≤ N, j = i Ei,j を求めてください。
输入格式
入力は以下の形式で標準入力から与えられる。
N A1 B1 C1 A2 B2 C2 ⋮ AN−1 BN−1 CN−1 D1 D2 … DN
输出格式
N 行出力せよ。i 行目には 1 ≤ j ≤ N, j = imax Ei,j を出力せよ。
题目大意
有一颗 n 个点,n−1 条边带边权的树,现在定义从点 i 到点 j 的距离是点 i 走到点 j 路上的边权和加上 dj,问每个点到其它点的最长距离
提示
制約
- 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 へいくつかの道路を通ることで移動できる。
- 入力はすべて整数である。
Sample Explanation 1
すべての街の順序つき組 (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