AT_abc222_f [ABC222F] Expensive Expense

题目描述

AtCoder 王国由 $N$ 个城市和 $N-1$ 条道路组成。 城市编号为城市 $1$、城市 $2$、$\dots$、城市 $N$。道路同样编号为道路 $1$、道路 $2$、$\dots$、道路 $N-1$。道路 $i$ 双向连接城市 $A_i$ 和 $B_i$,通过时需要支付 $C_i$ 的通行费。对于任意不同的城市对 $(i, j)$,都可以通过道路从城市 $i$ 到达城市 $j$。 现在,给定一个序列 $D = (D_1, D_2, \dots, D_N)$,其中 $D_i$ 表示在城市 $i$ 观光时需要的费用。此时,从城市 $i$ 到城市 $j$ 的旅行费用 $E_{i,j}$ 定义为:从城市 $i$ 出发,不重复经过同一条道路,前往城市 $j$ 时所需通行费之和,加上 $D_j$。 - 更严格地说,设 $i-j$ 之间的最短路径为 $i = p_0, p_1, \dots, p_{k-1}, p_k = j$,连接城市 $p_l$ 和 $p_{l+1}$ 的道路通行费为 $c_l$,则 $E_{i,j} = D_j + \displaystyle\sum_{l=0}^{k-1} c_l$。 请对于每个 $i$,求出以城市 $i$ 为起点前往其他城市时可能的最大旅行费用。 - 更严格地说,对于每个 $i$,求 $\max_{1 \leq j \leq N,\, j \neq i} E_{i,j}$。

输入格式

输入按以下格式从标准输入给出。 > $N$ > $A_1$ $B_1$ $C_1$ > $A_2$ $B_2$ $C_2$ > $\vdots$ > $A_{N-1}$ $B_{N-1}$ $C_{N-1}$ > $D_1$ $D_2$ $\dots$ $D_N$

输出格式

输出 $N$ 行。第 $i$ 行输出 $\max_{1 \leq j \leq N,\, j \neq i} E_{i,j}$。

说明/提示

### 限制条件 - $2 \leq N \leq 2 \times 10^5$ - $1 \leq A_i \leq N$ $(1 \leq i \leq N-1)$ - $1 \leq B_i \leq N$ $(1 \leq i \leq N-1)$ - $1 \leq C_i \leq 10^9$ $(1 \leq i \leq N-1)$ - $1 \leq D_i \leq 10^9$ $(1 \leq i \leq N)$ - 对于任意满足 $1 \leq i < j \leq N$ 的整数对 $(i, j)$,都可以通过若干道路从城市 $i$ 到城市 $j$。 - 所有输入均为整数。 ### 样例解释 1 对于所有城市的有序对 $(i, j)$,计算 $E_{i,j}$ 如下: - $E_{1,2} = 2 + 2 = 4$ - $E_{1,3} = 5 + 3 = 8$ - $E_{2,1} = 2 + 1 = 3$ - $E_{2,3} = 3 + 3 = 6$ - $E_{3,1} = 5 + 1 = 6$ - $E_{3,2} = 3 + 2 = 5$ 由 ChatGPT 4.1 翻译