这两对点连得通吗

问两件事:0 号和 5 号连不连通?1 号和 3 号呢?运行下面这段程序: def blocks(g): seen = set() out = [] for s in sorted(g): if s

开始练习 →

数出有几块

补全 blocks:对每个还没走过的点起一次遍历,把这一块的成员收集起来。输出一共有几块。

开始练习 →

把每块的成员都列出来

用同一个 blocks,把每一块的成员列出来:块内用 - 连,块与块之间用 / 隔开。

开始练习 →

⚠️ 遍历数块和并查集数块,必须一样

写两个版本:一个用遍历数块,一个用并查集数块。 输出三样:遍历数出几块 / 并查集数出几块 / 是否相同(相同输出 结果一致,否则 结果不一致)。

开始练习 →

BFS 为什么能给出最短步数

无权图上 BFS 求出的步数一定最短,因为【0】。

开始练习 →

DFS 能不能直接给最短步数

用 DFS 求最短步数【0】。

开始练习 →

怎么把最短路径也还原出来

BFS 除了步数还想要具体路径,办法是【0】。

开始练习 →

从 0 到各点各要几步

七个点,走不到的记成 -1。运行下面这段程序: from collections import deque def dist(g, s): d = {s: 0} q = deque([s]) while q:

开始练习 →

写 BFS 求最短步数

补全 dist:返回一个列表,第 i 项是从 s 到 i 号点的最少步数,走不到记 -1。

开始练习 →

0 到 4 最少几步

用上面的 dist,输出 0 号到 4 号的最少步数。

开始练习 →