#P2934. [USACO09JAN] Safe Travel G

    ID: 1975 远端评测题 1000ms 125MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>2009USACO并查集最短路最近公共祖先,LCA

[USACO09JAN] Safe Travel G

Description

小妖精侵占了农场。这些讨厌的类精灵生物会阻挠每头牛从谷仓(位于 pasture1\mathrm{pasture}_1(牧场 11))前往其他牧场的行程,其中第 ii 头牛要从 pasture1\mathrm{pasture}_1 前往 pasturei\mathrm{pasture}_i。每个小妖精都经过个性化训练,知道第 ii 头牛前往 pasturei\mathrm{pasture}_i 的最短路径。第 ii 个小妖精会埋伏在第 ii 头牛最短路径的最后一条道路上,企图骚扰这头牛。

每头牛当然都不希望被骚扰,因此会选择一条与原始最短路径至少存在细微差别的从 pasture1\mathrm{pasture}_1pasturei\mathrm{pasture}_i 的新路径。

请计算每头牛避开位于其原始最短路径最后一条道路上的小妖精后,新路线的最短通行时间。

给定 M(2M200000)M (2 \leq M \leq 200\,000) 条双向道路(编号 1M1\dots M)连接 N(3N100000)N (3 \leq N \leq 100\,000) 个牧场(编号 1N1\dots N)。第 ii 条道路连接牧场 ai(1aiN)a_i (1 \leq a_i \leq N)bi(1biN)b_i (1 \leq b_i \leq N),通行时间为 ti(1ti1000)t_i (1 \leq t_i \leq 1\,000)。保证没有两条道路连接同一对牧场,且所有测试数据中从 pasture1\mathrm{pasture}_1 到任意 pasturei\mathrm{pasture}_i 的最短路径唯一。

例如以下牧场、道路和通行时间:

1--[2]--2-------+ 
|       |       | 
[2]     [1]     [3] 
|       |       | 
+-------3--[4]--4
TRAVEL     最佳路线      最短时间    最后一条道路 
p_1 到 p_2   1->2          2         1->2 
p_1 到 p_3   1->3          2         1->3 
p_1 到 p_4  1->2->4        5         2->4 

当存在小妖精时:

TRAVEL     最佳路线      最短时间    规避道路 
p_1 到 p_2   1->3->2        3         1->2 
p_1 到 p_3   1->2->3        3         1->3 
p_1 到 p_4   1->3->4        6         2->4 
  • 对于 20%20\% 的测试数据,N200N\leq 200
  • 对于 50%50\% 的测试数据,N3000N\leq 3000

Input Format

  • 11 行:两个空格分隔的整数 NNMM
  • 2(M+1)2\dots (M+1) 行:每行三个空格分隔的整数 aia_ibib_itit_i

Output Format

  • 第 1..N-1 行:第 ii 行输出从 pasture1\mathrm{pasture}_1pasturei+1\mathrm{pasture}_{i+1} 时,避开其原始最短路径最后一条道路后的新最短路径时间。若不存在这样的路径,输出 -1。
4 5 
1 2 2 
1 3 2 
3 4 4 
3 2 1 
2 4 3 

3 
3 
6