最短路算法算出来的是什么

步数少的那条,路程反而更长 两步 三步 跑完一次单源最短路,直接得到的是【0】。

开始练习 →

⚠️ 两种走法,各要走多远

步数少的那条,路程反而更长 两步 三步 从 0 号到 4 号有两条路:0-2-4(只走 2 段)和 0-1-3-4(走 3 段)。各段长度是 0-1:2 0-2:1 1-3:3 2-4:9 3-4:1。运行下面这段程序,看两条路各多长: W

开始练习 →

Dijkstra 每一轮做什么

Dijkstra 的每一轮是【0】。

开始练习 →

为什么取出来就能定死

Dijkstra 取出一个点后就不再改它,因为【0】。

开始练习 →

Dijkstra 靠什么快速取最近的点

Dijkstra 通常用【0】来取当前最近的点。

开始练习 →

⚠️ 从堆里弹出来时先检查什么

从优先队列弹出一个点,第一件事是【0】。

开始练习 →

从 0 到各点的最短距离

七个点的带权图,走不到的记 -1。运行下面这段程序: def build(edges): g = {} for a, b, w in edges: g.setdefault(a, []).append((b,

开始练习 →

写一个 Dijkstra

补全 dijkstra:用小根堆,弹出时先跳过已经处理过的点,再松弛它的每条边。

开始练习 →

把最短路径还原出来

补全 dij_path:松弛成功时记下父亲,最后从终点倒着回溯。输出 0 到 4 的路径(用 - 连)。

开始练习 →

⚠️ 最短的路 vs 最少的步

算出 0 到 4 的带权最短路,再和步数最少那条(0-2-4)比一比。 输出三样:最短总长 / 它走了几条边 / 步数最少那条的总长。

开始练习 →