SZ#G8S34. 返回起点

提交4 通过1
通过率25%
时间限制2000ms
内存限制512MiB
    ID: 12063 传统题 2000ms 512MiB 尝试: 4 已通过: 1 难度: 普及+/提高- 上传者: 标签>GESPGESP强化C++c++编程题单源最短路Dijkstra最短环

题目描述

题目描述

小婷正在研究一个有向交通网络。网络中有 NN 座城市和 MM 条有向道路,城市编号为 11NN。第 ii 条道路从城市 AiA_i 通向城市 BiB_i,通过它需要 CiC_i 的时间。

道路只能按照规定方向通行。网络中允许存在从一座城市直接回到自身的自环,也允许两座城市之间存在多条方向相同、耗时不同的道路。

对于每一座城市 ss,小婷都希望找到一条旅行路线:从城市 ss 出发,至少经过一条道路,最后重新回到城市 ss。路线中可以经过其他城市,也可以重复经过城市或道路。

请分别求出从每座城市出发并返回该城市的最短总时间。如果某座城市不存在这样的非空往返路线,则输出 1-1

输入格式

第一行输入两个整数 N,MN,M

接下来 MM 行,第 ii 行输入三个整数 Ai,Bi,CiA_i,B_i,C_i,描述一条有向道路。

输出格式

输出 NN 行。第 ii 行输出从城市 ii 出发、至少经过一条道路并返回城市 ii 的最短时间;若不存在,输出 1-1

4 4
1 2 5
2 3 10
3 1 15
4 3 20
30
30
30
-1

样例说明 #1

城市 1,2,31,2,3 位于同一个有向环中,可以分别计算返回自身的最短时间;城市 44 无法返回自身。

4 6
1 2 5
1 3 10
2 4 5
3 4 10
4 1 10
1 1 10
10
20
30
20

样例说明 #2

城市 11 有一条耗时为 1010 的自环,它本身就是一条合法的非空往返路线。

4 7
1 2 10
2 3 30
1 4 15
3 4 25
3 4 20
4 3 20
4 3 30
-1
-1
40
40

数据范围与约定

1N20001\le N\le20001M20001\le M\le20001Ai,BiN1\le A_i,B_i\le N1Ci1051\le C_i\le10^5。允许自环和重边,输入中的所有数均为整数。