#5970. 【模板】单源最短路径(标准版,Dijkstra+堆优化)

【模板】单源最短路径(标准版,Dijkstra+堆优化)

题目描述

给定一个 nn 个点、mm 条有向边的带非负权图,请你计算从起点 ss 出发,到每个点的最短距离。数据保证从 ss 出发可以到达任意点。

输入格式

第一行包含三个正整数 n,m,sn, m, s,分别表示点数、边数和起点。
接下来 mm 行,每行包含三个非负整数 ui,vi,wiu_i, v_i, w_i,表示一条从 uiu_iviv_i 的有向边,权值为 wiw_i

输出格式

输出一行 nn 个整数,用空格分隔,依次表示 ss 到点 1,2,,n1, 2, \dots, n 的最短距离。

样例

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 距离 22;到 33 的最短路径为 1231 \to 2 \to 3,距离 44;到 44 的最短路径为 1241 \to 2 \to 4,距离 33

数据范围

  • 1n1051 \le n \le 10^5
  • 1m2×1051 \le m \le 2 \times 10^5
  • 1ui,vin1 \le u_i, v_i \le n
  • 0wi1090 \le w_i \le 10^9
  • 0wi1090 \le \sum w_i \le 10^9
  • 数据保证至少存在一条从 ss 到任意点的路径。