并查集连了两次之后

并查集连了两次之后

五个点各自一块。先 union(0, 2),再 union(3, 4)。运行下面这段程序,看三件事:0 和 2 连通了吗、0 和 3 连通了吗、现在还剩几块: def make(verts):

阅读更多 →
Kruskal 什么时候可以停

Kruskal 什么时候可以停

Kruskal 可以提前收工的条件是【0】。

阅读更多 →
⚠️ 拿什么判断

⚠️ 拿什么判断"会不会成环"

Kruskal 判断一条边加进去会不会成环,用的是【0】。

阅读更多 →
Kruskal 的做法

Kruskal 的做法

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

阅读更多 →
⚠️ 拆掉一条边,成本变多少

⚠️ 拆掉一条边,成本变多少

分别拆掉两条边,各重新算一次最小总长: 拆掉最贵的那条 2-4(权重 9) 拆掉最便宜的那条 0-2(权重 1) 把两个总长拼起来输出(拆最贵的在前)。

阅读更多 →
暴力枚举所有生成树

暴力枚举所有生成树

补全 brute_mst:从五条边里取出所有四条边的组合,判断它是不是一棵生成树(不成环且连通),取总长最小的。

阅读更多 →
五条边按权重排好是什么样

五条边按权重排好是什么样

把这五条边按权重从小到大排一遍。运行下面这段程序: edges = [(0, 1, 2), (0, 2, 1), (1, 3, 3), (2, 4, 9), (3, 4, 1)] print(&quo

阅读更多 →
这五个点连起来最少要多少

这五个点连起来最少要多少

主连通块有五个点、五条边:0-1:2 0-2:1 1-3:3 2-4:9 3-4:1。运行下面这段程序,看最小总长和用了几条边: def make(verts): return {u: u f

阅读更多 →
MST 和最短路差在哪

MST 和最短路差在哪

最小生成树和最短路的区别是【0】。

阅读更多 →
生成树有多少条边

生成树有多少条边

n 个顶点的生成树一定有【0】条边。

阅读更多 →