⚠️ Kruskal 和暴力枚举必须一致

把 Kruskal 和暴力枚举所有生成树都写出来,在同一组边上各求一次最小总长。 输出三样:Kruskal 的答案 / 暴力的答案 / 是否相同(相同输出 结果一致,否则 结果不一致)。

开始练习 →

Prim 的做法

Prim 求最小生成树的做法是【0】。

开始练习 →

Prim 和 Kruskal 差在哪

Prim 和 Kruskal 的区别是【0】(前一个说 Prim,后一个说 Kruskal)。

开始练习 →

Prim 从 0 出发的总长

同一组边,这次用 Prim,从 0 号点开始长。运行下面这段程序: import heapq def prim(edges, verts, s): ad = {u: [] for u in verts} for a, b,

开始练习 →

Prim 是按什么顺序加边的

看 Prim 从 0 出发时,四条边是按什么顺序加进来的: import heapq def prim(edges, verts, s): ad = {u: [] for u in verts} for a, b, w i

开始练习 →

写一个 Prim

补全 prim:用小根堆存"从树里连出去的边",每次弹最短的一条,另一端还没进树才要。输出最小总长。

开始练习 →

输出 Prim 的加边顺序

用同一个 prim,从 0 出发,把四条边按加入顺序输出(a-b,用 / 隔开)。

开始练习 →

⚠️ 换个起点,结果一样吗

用同一个 prim,分别从 0 号和4 号出发各长一棵树。 输出三样:从 0 的总长 / 从 4 的总长 / 两棵树的边集是否相同(相同输出 结果一致,否则 结果不一致)。

开始练习 →

⚠️ 两种算法,第二条边就分道扬镳

把 Kruskal 和 Prim(从 0 出发)都写出来。 输出三样:Kruskal 选的第二条边 / Prim 加的第二条边 / 两者的边集是否相同(写成 a-b;相同输出 结果一致)。

开始练习 →

「导航」和「联网」怎么分

拿到一个实际问题,判断该用最短路还是 MST,看【0】。

开始练习 →