luogu#P11514. [CCO 2024] Treasure Hunt

[CCO 2024] Treasure Hunt

题目背景

翻译自 CCO2024P1题

题目描述

nn 个岛屿通过 mm 条海路相连,每条路连接了两个岛屿 aia_ibib_i,需要花费 cic_i 个硬币。Perry 想要找到一条路径从他当前所在的岛屿出发,在旅途中开启宝箱并收集金币,并保证得到最大可能收益。事实证明,击退海怪的代价是相当昂贵的。为了寻找下一笔大的战利品,Perry 已经勘察了 nn 个岛屿,并确定第 ii 个岛屿上有一个装有 viv_i 枚硬币的宝箱。

他决定从岛屿 XX 开始,沿着一些的海上路线航行(可能不航行),最终到达岛屿 YY。在他的旅程结束时,他会在岛屿 YY 打开箱子,收集战利品。

然而 Perry 不知道自己目前所在的岛屿!因此,对于每一个可能的起点岛屿 XX,他都想知道从该岛屿出发的所有旅程中所能获得的最大可能的硬币数。你能帮助他计算这些值吗?你可以假设佩里有足够的硬币来穿越他选择的任何海上路线;他只关心下一次旅程的净收益。

输入格式

第一行两个整数 n,mn, m

第二行 nn 个整数 viv_i

往后 mm 行每行三个整数 ai,bi,via_i, b_i, v_i,其描述了一条海路 ii

保证无重边无自环。

输出格式

nn 行,每行一个整数,第 ii 行的整数代表以点 ii 为起点岛屿所获得的最大可能的硬币数。

4 5
6 5 9 2
1 2 0
3 2 3
4 3 6
1 3 5
2 4 2
6
6
9
4

提示

数据范围

Subtask 分数 约束
Subtask 00 00 样例
Subtask 11 2020 1n30001 \le n \le 30000m30000 \le m \le 3000
Subtask 22 1n1061 \le n \le 10^60m1060 \le m \le 10^6,对于每个岛屿 iici=0c_i=0ci=109c_i=10^9
Subtask 33 2828 1n1061 \le n \le 10^60m1060 \le m \le 10^6,任意一对岛屿之间恰好有一条路径
Subtask 44 3232 无特殊限制

对于 100%100\% 的数据,1n1061 \le n \le 10^60m1060 \le m \le 10^60vi,ci1090 \le v_i,c_i \le 10^91ai,bin1 \le a_i,b_i \le n

样例解释 #1

对于第一个和第三个岛屿,最好待在岛上并打开岛上的箱子。

对于第二个岛屿,Perry 可以前往第一个岛屿并打开那里的箱子。这将带来 60=66 - 0 = 6 枚硬币的净收益,是最佳的净收益。

对于第四个岛屿,Perry 可以前往第二个和第三个岛屿并打开那里的箱子。这将带来 923=49 - 2 - 3 = 4 枚硬币的净收益,是最佳的净收益。