luogu#P11095. [ROI 2021 Day 2] 旅行

    ID: 15020 远端评测题 1000~3000ms 1024MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>2021Special JudgeROI(俄罗斯)

[ROI 2021 Day 2] 旅行

题目背景

翻译自 ROI 2021 D2T4

Sky 决定成为旅行 up 主,发布在全国各个城市旅行的视频。这个国家有 nn 个城市,编号从 11nn。城市 11 是国家的首都。城市之间有 mm 条双向道路,编号从 11mm,每条道路连接两个不同的城市。同时,同一对城市可以通过多条不同的道路连接。从任何一个城市都能够通过道路到达其他任何一个城市。

Sky 和 Aqua 不能分开,所以 Sky 计划和 Aqua 一起从首都出发前往另一个城市,但目前尚未选择具体是哪个城市。到达城市 kk 的旅行路线将由城市 s1,s2,,sqs_1, s_2,\dots,s_q 和道路 r1,r2,,rq1r_1,r_2,\dots,r_{q-1} 组成,其中:

  • s1=1,sq=ks_1 = 1,s_q = k
  • 道路 rir_i 连接城市 sis_isi+1s_{i+1}
  • Sky 和 Aqua 不会两次经过同一条道路,因此所有的 rir_i 都是不同的。可以多次经过同一个城市,包括旅行起始城市 11 和旅行结束城市 kk

对于每条道路,Sky 都计算了在该道路上进行旅行拍摄的视频时长,第 ii 条道路的视频时长为 tit_i

在旅行过程中,Sky 和 Aqua 都会选择旅行路线中的其中一条道路并拍摄与该道路相关的视频。Sky 喜欢拍短视频,因此 Sky 会选择 tit_i 最小的道路;而 Aqua 喜欢拍长视频,因此 Aqua 会选择 tit_i 最大的道路。

两个视频的总时长为 $\min\limits_{1\le i \le q-1}t_{r_{i}} + \max\limits_{1\le i \le q-1}t_{r_{i}}$。

题目描述

Sky 不愿意浪费素材,于是想把两个视频拼到一起,并发布到某知名视频网站上。因为现在短视频更受欢迎,所以 Sky 希望尽量减少两个视频的总时长。为了选择旅行的目的地和路线,需要计算出每个目的地 kk 在从城市 11 到城市 kk 的所有可能路线中两个视频的最小总时长。

输入格式

第一行包含两个整数 nnmm2n3000002 \le n \le 3000001m3000001 \le m \le 300000),分别表示城市和道路的数量。

接下来的 mm 行包含道路的描述。第 ii 行包含三个整数 ui,vi,tiu_i,v_i,t_i1ui,vin1 \le u_i,v_i \le nuiviu_i \ne v_i0ti1090 \le t_i \le 10^9),分别表示连接该道路的城市编号以及在该道路上拍摄视频的时长。

保证通过现有的道路可以从任何一个城市到达任何其他城市。

输出格式

对于每个 2kn2 \le k \le n,输出从城市 11 到城市 kk 的旅行中 Sky 和 Aqua 的视频总时长的最小值。

3 3
1 2 2
1 3 1
2 3 1
2
2
7 10
1 2 2
1 2 8
2 3 3
3 4 5
3 5 4
4 5 4
6 5 7
6 4 4
1 7 6
6 7 9
4
5
6
6
6
10
4 4
1 2 2
3 2 0
2 4 3
4 3 1
3
2
2

提示

数据范围见输入格式。

子任务 分值 nn\le mm\le 特殊性质
11 99 300000300000 m=n1m=n-1
22 1717 所有连接到城市 11 的道路 ii 满足 ti=0t_i=0
33 1212 所有连接到城市 11 的道路 ii 满足 ti=109t_i=10^9
44 99 1010 每对城市的连接不超过一条道路
55 66 2020
66 20002000 对于所有道路 iiuivi=1\lvert u_i-v_i\rvert=1
77 99
88 50005000 300000300000
99 1010 300000300000 对于所有的 aa,城市 aaa+1a + 1 之间存在一条道路;对于任意一对道路 iijj,如果 uivi=1\lvert u_i − v_i\rvert = 1ujvj>1\lvert u_j − v_j\rvert > 1,则 titjt_i \le t_j
1010 1414