#5969. 【模板】单源最短路径(弱化版,Dijkstra)

【模板】单源最短路径(弱化版,Dijkstra)

题目描述

给出一个有向图,请输出从某一点出发到所有点的最短路径长度。

输入格式

第一行包含三个整数 n,m,sn,m,s,分别表示点的个数、有向边的个数、出发点的编号。

接下来 mm 行,每行包含三个整数 u,v,wu,v,w,表示一条从 uuvv、长度为 ww 的边。

输出格式

输出一行 nn 个整数,第 ii 个表示 ss 到第 ii 个点的最短路径长度,若不能到达则输出 1-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

样例解释

11 出发,到 11 的最短路径为 00;到 22 的最短路径为 121 \to 2,长度 22;到 33 的最短路径为 1231 \to 2 \to 3,长度 2+2=42+2=4;到 44 的最短路径为 1241 \to 2 \to 4,长度 2+1=32+1=3

数据范围与提示

  • 对于 20%20\% 的数据,1n51 \le n \le 51m151 \le m \le 15
  • 对于 40%40\% 的数据,1n1001 \le n \le 1001m1041 \le m \le 10^4
  • 对于 70%70\% 的数据,1n10001 \le n \le 10001m1051 \le m \le 10^5
  • 对于 100%100\% 的数据,1n1041 \le n \le 10^41m5×1051 \le m \le 5\times 10^51u,vn1 \le u,v \le n1w<2311 \le w < 2^{31},保证数据随机;
  • 两个点之间可能有多条边。