SPFA算法模板题


Submit solution

Points: 150
Time limit: 1.0s
Memory limit: 4M

Author:
Problem type
Allowed languages
C, C++

SPFA 最短路算法练习题:城市传送系统

📝 题目描述

有一个包含 \(n\) 个城市的传送网络,每两个城市之间可能存在单向传送路径,每条路径都有传送的时间消耗。传送系统的设计允许某些城市之间没有直接路径,甚至可能存在负权路径,但不允许出现负环。

现在,你被要求从城市 \(1\) 出发,计算到所有城市的最短传送时间。


📥 输入格式

  • 第一行包含两个整数 \(n\) 和 \(m\)(\(1 \le n \le 10^4,1 \le m \le 5×10^4\)),表示城市数量和路径数量。
  • 接下来 \(m\) 行,每行三个整数 \(u, v, w\),表示存在一条从城市 \(u\) 到城市 \(v\) 的单向路径,耗时为 \(w\)(\(-1000 \le w \le 1000\))。

📤 输出格式

  • 输出一行包含 \(n\) 个整数,第 \(i\) 个数表示从城市 \(1\) 到城市 \(i\) 的最短传送时间(城市编号从 \(1\) 到 \(n\))。
  • 如果无法到达某个城市,输出 "-1" 表示无法到达。

🎯 样例输入

5 6
1 2 2
1 3 5
2 3 1
2 4 2
3 5 -3
4 5 3

✅ 样例输出

0 2 3 4 0

💡 提示

  • 城市编号从 1 开始。
  • 该图中不包含负权环,SPFA 可以正确运行。
  • 可以使用 SPFA / Bellman-Ford )等最短路算法解答,但推荐使用 SPFA。

Comments

There are no comments at the moment.