#2396. 安全路经

安全路经

题目描述

精灵最近在农场上泛滥,它们经常会阻止牛们从农庄(\red{(}牛棚1)\red{1)}走到别的牛棚(\red{(}i\red{i}的目的地是牛棚i)\red{i),}每一个精灵只认识牛i\red{i}并 且知道牛i\red{i}一般走到牛棚i\red{i}的最短路经,所以它们在牛到牛棚之前的最后一条牛路上等牛i\red{i}

当然,牛不愿意遇到精灵,所以准备找一条稍微不同的路经从牛棚1\red{1}走到牛棚i\red{i}。所以,请你为每一头牛i\red{i}找出避免精灵的最短路经的长度。

和以往一样,农场上的M(2<M<200000)\red{M(2<M<200000)}条双向牛路编号为1\red{1}M\red{M}并且能让所有牛到达它们的目的地,N(3\red{N(3 ≤}N<100000)\red{N< 100000)}个牛棚,牛路i\red{i}连接牛棚ai\red{a_i}bi\red{b_i}(1\red{(1≤}ai\red{a_i}bi\red{b_i}\red{≤} N)\red{N)}并且需要时间ti\red{t_i}(1<ti\red{(1<t_i}<1000)\red{<1000)}通过,没有两条牛路 连接同样的牛棚,所有牛路满足ai\red{a_i≠} bi\red{b_i}在所有数据中,牛i\red{i}使用的牛棚1\red{1}到牛棚i\red{i}的最短路经是唯一的。

以下是一个牛棚,牛路和时间的例子:

img

行程 最佳路径 最佳时间 最后牛路
p1\red{p_1}p2\red{p_2} 1\red{1→}2\red{2} 2\red{2} 1\red{1→}2\red{2}
p1\red{p_1}p3\red{p_3} 1\red{1→}3\red{3} 1\red{1→}3\red{3}
p1\red{p_1}p4\red{p_4} 1\red{1→}2\red{2→}4\red{4} 5\red{5} 2\red{2→}4\red{4}

当精灵进入农场后:

行程 最佳路径 最佳时间 避免
p1\red{p_1}p2\red{p_2} 1\red{1→}3\red{3→}2\red{2} 3\red{3} 1\red{1→}2\red{2}
p1\red{p_1}p3\red{p_3} 1\red{1→}2\red{2→}3\red{3} 1\red{1→}3\red{3}
p1\red{p_1}p4\red{p_4} 1\red{1→}3\red{3→}4\red{4} 6\red{6} 2\red{2→}4\red{4}

输入格式

第一行: 两个空格分开的数, N\red{N}M\red{M}

2..M+1\red{2..M+1}行: 三个空格分开的数ai,bi,\red{a_i, b_i,}ti\red{t_i}

输出格式

1..N1\red{1..N-1}行:

i\red{i}行包含一个数:从牛棚1\red{_1}到牛棚i+1\red{_i+1}并且避免从牛棚1\red{1}到牛棚i+1\red{i+1}最短路经上最后一条牛路的最少的时间.

如果这样的路经不存在,输出1.\red{-1.}

样例

输入样例

4 5
1 2 2
1 3 2
3 4 4
3 2 1
2 4 3

输出样例

3
3
6