题目描述
给出一个有向图,请输出从某一点出发到所有点的最短路径长度。
输入格式
第一行包含三个整数 n,m,s,分别表示点的个数、有向边的个数、出发点的编号。
接下来 m 行每行包含三个整数 u,v,w,表示一条 u→v 的,长度为 w 的边。
输出格式
输出一行 n 个整数,第 i 个表示 s 到第 i 个点的最短路径长度,若不能到达则输出 −1。
样例
4 6 1
1 2 2
2 3 2
2 4 1
1 3 5
3 4 3
1 4 4
0 2 4 3
样例解释
从 1 出发,到 1 的最短路径为 0;到 2 的最短路径为 1→2,长度 2;到 3 的最短路径为 1→2→3,长度 2+2=4;到 4 的最短路径为 1→2→4,长度 2+1=3。
数据范围
- 对于 20% 的数据:1≤n≤5,1≤m≤15;
- 对于 40% 的数据:1≤n≤100,1≤m≤104;
- 对于 70% 的数据:1≤n≤1000,1≤m≤105;
- 对于 100% 的数据:1≤n≤104,1≤m≤5×105,1≤u,v≤n,1≤w<231,保证数据随机。
两个点之间可能有多条边,敬请注意。