有向图最短路(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 位整数与无穷大初始化。