#7203. ztm的肉鸽游戏

0
    ID: 7203 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 5 上传者: 标签>2025提高班模拟赛(26)树形DP换根DP树CSP-S

ztm的肉鸽游戏

ztm 的肉鸽游戏

题目描述

ztm 最近在玩一个 roguelikeroguelike 类型的游戏,这个游戏的每一关都有 nn 个地点,每个地点有对应的功能——"商店","普通怪物","精英怪物","随机事件" 等等

但是不论这个游戏如何设计,最终问题说白了就是让玩家从某个点出发,尝试获得最大收益

所以 ztm 将地图进行了化简,首先 ztm 将所有的游戏内数值(血量,魔法值,状态效果等等)全部转换成用金币来描述!

并且他挑出了 n−1n - 1 条路径来连接所有的地点,穿过每条路径,不论路径上是什么事件,均看作是需要花费一定的金币,到达某个地点时也不论是什么事件,均可以看作会收获一些金币

现在 ztm 想知道,他应该选择哪一个点作为起点,来获得最大收益?

为了方便 ztm 选择,请你计算出任意点作为起点时可以获得的最大收益

请注意,在游戏中是允许玩家重复经过某一条路径,也允许玩家重复到达某个地点,但是每次经过路径都需要花费对应的金币,而只有第一次到达某个地点时才会获得金币

输入格式

输入第一行包含一个整数 nn 表示有 nn 个地点 接下来 n−1n - 1 行,每行输入三个整数 u,v,wu,v,w 表示 u,vu,v 两个点之间存在一条双向路径,经过这条路径需要花费 ww 个金币 最后一行包含 nn 个整数 aia_i,分别表示第一次到达每个地点时能获得的金币

输出格式

输出 nn 行,每行一个整数表示从第 ii 个点出发时能获得的最大金币数量

数据范围

对于 20%20\% 的数据,满足 N≤10N \leq 10

对于 50%50\% 的数据,满足 N≤1000N \leq 1000

对于 100%100\% 的数据,满足 1≤N≤3∗105,1≤w,ai≤1051 \leq N \leq 3 * 10^5,1 \leq w,a_i \leq 10^5。

样例输入

6
1 2 1
2 3 3
3 4 36
3 6 13
3 5 2
6 8 9 10 13 1

样例输出

30
29
28
10
30
16