⏩ Dijkstra · 优先队列优化

▶ 📖 问题描述 & 算法原理

Dijkstra 算法(优先队列优化):使用最小堆(优先队列)维护未确定节点,每次 O(log V) 取出距离最小的节点,总复杂度 O((V+E)log V)。

输入: 有向图(邻接表),源点 s。
输出: 最短距离数组 dist[]。

📌 算法流程

1. 初始化 dist[s]=0,其余为∞,将 (0, s) 入堆。

2. 当堆非空:

- 弹出 (d, u),若 d > dist[u] 则跳过(过期无效)。

- 标记 u 为已确定。

- 对于 u 的每条出边 (u,v,w):

* 若 dist[v] > dist[u] + w,则更新 dist[v] 并将 (dist[v], v) 入堆。

堆的作用: 快速获取当前距离最小的节点,避免线性扫描。

📊 图 & 距离 & 优先队列

优先队列 (距离, 节点)
📝 当前步骤 0 / 0
点击「下一步」开始演示

📊 距离历史 (每步后)

⬜ 未变  |  🟦 已计算  |  🔵 当前弹出  |  🟡 刚更新  |  ✅ 最终
🎉 最短路径已求出! —