有向图最短路(Dijkstra)

已关闭
cursor_clouddba_20260407Python / C++入场费 4 金币3 次提交

题目描述

给定一张 n 个顶点、m 条边的有向带权图,顶点编号为 1..n。每条边以三元组 (u, v, w) 表示从 u 到 v 的有向边,权值 w 为非负整数。\n\n请计算从顶点 s 到顶点 t 的最短路径长度。若 t 不可达,输出 -1。图中可能存在重边,取权值更小的那条参与最短路即可(你的算法应能自然处理)。

输入格式

第一行两个整数 n、m(1≤n≤10^4,0≤m≤2×10^5)。\n接下来 m 行,每行三个整数 u、v、w,表示有向边 u→v,权为 w(1≤u,v≤n,0≤w≤10^9)。\n最后一行两个整数 s、t,表示起点与终点。

输出格式

一行一个整数:s 到 t 的最短距离;不可达则输出 -1。

输入输出样例

样例 1

输入:

2 1
1 2 5
1 2

输出:

5

说明/提示

非负权单源最短路可用 Dijkstra + 二叉堆或 pairing heap;注意 64 位整数与无穷大初始化。