⚠️ 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】。