atcoder#ABC222F. [ABC222F] Expensive Expense

[ABC222F] Expensive Expense

配点 : 500500

問題文

AtCoder 王国は NN 個の街と N1N-1 個の道路からなります。 街には 街 11, 街 22, \dots, 街 NN と番号がついています。道路にも同様に 道路 11, 道路 22, \dots, 道路 N1N-1 と番号が付いています。 道路 ii は街 AiA_iBiB_i を双方向に結んでいて、通過するときに CiC_i の通行料がかかります。すべての異なる街の組 (i,j)(i, j) に対して、道路を経由して街 ii から街 jj に行くことができます。

今、列 D=(D1,D2,,DN)D = (D_1, D_2, \dots, D_N) が与えられます。 DiD_i は街 ii を観光するときにかかる費用です。 このとき、街 ii から街 jj への旅費 Ei,jE_{i,j} を、(同じ道を 22 回以上使わずに街 ii から街 jj へ向かうときにかかる通行料の和) に DjD_{j} を足したものとして定めます。

  • 厳密に言い換えると、iji - j 間の最短パスを i=p0,p1,,pk1,pk=ji = p_0, p_1, \dots, p_{k-1}, p_k = j として、街 plp_{l} と街 pl+1p_{l+1} を結ぶ道路の通行料を clc_l と置いたときに Ei,j=Dj+l=0k1clE_{i,j} = D_j + \displaystyle\sum_{l=0}^{k-1} c_l と定義します。

すべての ii に対して、街 ii を始点として他の街へ旅行したときにありえる旅費の最大値を求めてください。

  • 厳密に言い換えると、すべての ii に対して max1jN,jiEi,j\max_{1 \leq j \leq N, j \neq i} E_{i,j} を求めてください。

制約

  • 2N2×1052 \leq N \leq 2 \times 10^5
  • 1AiN1 \leq A_i \leq N (1iN1)(1 \leq i \leq N-1)
  • 1BiN1 \leq B_i \leq N (1iN1)(1 \leq i \leq N-1)
  • 1Ci1091 \leq C_i \leq 10^9 (1iN1)(1 \leq i \leq N-1)
  • 1Di1091 \leq D_i \leq 10^9 (1iN)(1 \leq i \leq N)
  • 整数の組 (i,j)(i,j)1i<jN1 \leq i \lt j \leq N を満たすならば、街 ii から街 jj へいくつかの道路を通ることで移動できる。
  • 入力はすべて整数である。

入力

入力は以下の形式で標準入力から与えられる。

NN

A1A_1 B1B_1 C1C_1

A2A_2 B2B_2 C2C_2

\vdots

AN1A_{N-1} BN1B_{N-1} CN1C_{N-1}

D1D_1 D2D_2 \dots DND_N

出力

NN 行出力せよ。ii 行目には $\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)(i,j) に対して Ei,jE_{i,j} を計算すると次のようになります。

  • E1,2=2+2=4E_{1,2} = 2 + 2 = 4
  • E1,3=5+3=8E_{1,3} = 5 + 3 = 8
  • E2,1=2+1=3E_{2,1} = 2 + 1 = 3
  • E2,3=3+3=6E_{2,3} = 3 + 3 = 6
  • E3,1=5+1=6E_{3,1} = 5 + 1 = 6
  • E3,2=3+2=5E_{3,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