#4615. 弗洛伊德(Floyd-Warshall)算法练习1
弗洛伊德(Floyd-Warshall)算法练习1
【题目描述】
给定一个有 个节点的有向图,节点编号为 ,图中有 条带权边(无重边),边权可以为负整数(),且图中不存在负权环(即不存在从某个节点出发,回到自身的路径总权值为负)。请使用 Floyd-Warshall 算法计算任意两点之间的最短路径长度,若两点之间不存在可达路径,输出 -1。
【输入格式】
第一行:两个整数 (,) 接下来 行:每行三个整数 ,表示有一条从节点 指向节点 的有向边,边权为
【输出格式】
共 行,每行 个整数,第 行第 个数表示从节点 到节点 的最短路径长度(按要求输出 -1 或具体数值)
【样例输入】
4 6
1 2 3
1 3 8
1 4 -4
2 4 1
2 3 4
3 2 -5
【样例输出】
0 2 6 -4
-1 -1 3 -1
-1 -6 -2 -6
-1 -1 -1 0
【练习要点】
- 掌握含负权边(无负权环)的 Floyd 算法处理(核心松弛逻辑不变,注意 INF 的选择避免溢出)
- 理解负权边对最短路径的影响,验证松弛操作的有效性
- 强化对“不可达”状态的判断(避免负权边导致 INF 被错误更新)