题目描述
给定一张 nn 个点、mm 条边的有向图,求 11 号点到每个点的最短路径长度。
注意,图可能存在重边和自环,保证不存在负环。
输入格式
第一行两个整数 n, mn,m。
接下来 mm 行,每行三个整数 u_i, v_i, w_iu
i
,v
i
,w
i
。表示一条从 u_iu
i
到 v_iv
i
长度为 w_iw
i
的有向边。
输出格式
一行 nn 个整数,第 ii 个整数表示 11 到 ii 的最短路径长度,如果不存在从 11 到 ii 的路径则第 ii 个整数用 -1−1 替代。
输入输出样例
输入 #1复制
4 5
1 2 1
2 3 4
1 3 3
4 1 5
3 1 2
输出 #1复制
0 1 3 -1
输入 #2复制
10 50
5 9 6
1 3 10
3 1 1
10 2 5
8 5 1
10 10 6
6 5 2
1 5 10
2 5 5
10 1 4
1 5 2
8 8 7
7 2 7
9 2 8
3 1 4
6 2 5
3 9 9
4 9 5
5 10 9
10 1 9
5 4 5
9 1 2
5 10 6
3 8 7
10 3 7
5 8 8
9 2 6
9 8 6
3 2 8
1 3 8
1 10 1
7 8 4
9 4 5
4 6 2
2 7 6
10 1 5
9 9 7
6 7 4
1 1 7
8 3 10
8 3 9
10 9 8
3 9 1
7 4 8
1 5 4
8 4 4
3 4 4
9 9 2
2 10 4
8 9 6
输出 #2复制
0 6 8 7 2 9 12 10 8 1
说明/提示
本题没有部分分。
对于所有数据,1\leq n,m \leq 2\times 10^31≤n,m≤2×10
3
,-10^9\leq w_i\leq 10^9−10
9
≤w
i
≤10
9
。
请注意答案上界的大小,可能需要使用 C++ 中的 long long int 类型。
#include<iostream>
#include<cst