#P9160. 最短路径(Shortest Path)

最短路径(Shortest Path)

最短路径(Shortest Path)

问题描述

给你一个含 N N 个顶点、M M 条边的简单有向带权图。第 i i 条边从顶点 ai a_i 指向顶点 bi b_i ,权重为 ci c_i
请找出从顶点 s s 到顶点 t t 的一条最短路径(按边权和最小);若不存在路径,输出 -1

若有多个最短路径,输出任意一条即可。

约束条件

  • 2N5×105 2 \leq N \leq 5 \times 10^5
  • 1M5×105 1 \leq M \leq 5 \times 10^5
  • 0s,t<N 0 \leq s, t < N
  • st s \ne t
  • 0ai,bi<N 0 \leq a_i, b_i < N
  • aibi a_i \ne b_i
  • (ai,bi)(aj,bj) (a_i, b_i) \ne (a_j, b_j) ij i \ne j
  • 0ci109 0 \leq c_i \leq 10^9

输入格式

N M s tN\ M\ s\ t
a0 b0 c0a_0\ b_0\ c_0
a1 b1 c1a_1\ b_1\ c_1
:
aM1 bM1 cM1a_{M-1}\ b_{M-1}\ c_{M-1}

输出格式

  • 若无路径:

    -1

  • 否则:

    X YX\ Y
    u0 u1  uY1u_0\ u_1\ \dots\ u_{Y-1}

其中:

  • X X 是最短路径的总权重;
  • Y Y 是路径上的边数;
  • ui u_i 是第 i i 条边的起点顶点(即路径顶点序列为 u0,u1,,uY u_0, u_1, \dots, u_Y ,其中 uY=t u_Y = t )。
5 7 2 3
0 3 5
0 4 3
2 4 2
4 3 10
4 0 7
2 1 5
1 0 1
11 3
2 1
1 0
0 3
2 1 0 1
1 0 10
-1