#P11514. [CCO 2024] Treasure Hunt

[CCO 2024] Treasure Hunt

题目背景

翻译自 CCO2024 P1

题目描述

佩里海盗正在航行七大洋!他有一张由 NN 个岛屿和 MM 条海路组成的地图。第 ii 条海路连接岛屿 aia_ibib_i,双向通行的费用为 cic_i 金币。与海怪交战代价不菲。为了寻找下一个大笔战利品,佩里已经侦查过每个岛屿,确定第 ii 个岛上有一个装有 viv_i 金币的宝箱。

他打算航行一段(可能为空)的海路,从岛屿 xx 出发到岛屿 yy 结束。旅程结束时,他会打开岛屿 yy 的宝箱并获得战利品。这里的问题是:佩里并不知道自己当前在哪个岛上!因此,对于每个可能的起始岛 xx,他想知道从该岛出发所有可能旅程中能够获得的最大净收益(假设他有足够的金币支付沿途的通行费用;他只关心下一次旅程的净利润)。

输入格式

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

第二行 nn 个整数 viv_i

往后 mm 行每行三个整数 ai,bi,cia_i, b_i, c_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

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

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

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