五项一起对得上吗

运行下面这段程序: def dfs(g, s): seen = set() out = [] def go(u): seen.add(u) out.append(u)

开始练习 →

第一步:两种遍历

最终作品第一步:写出 dfs 和 bfs,从 0 出发各跑一遍,找出 2 号在两个顺序里的位次(从 1 数起),拼起来输出(DFS 在前)。

开始练习 →

第二步:连通分量

写出 blocks,输出三样:块数 / 第一块多大 / 第二块多大。

开始练习 →

第三步:最短步数和路径

写出 BFS 求最短步数和还原路径的代码,输出两样:0 到 4 的步数 / 这条路径(路径用 - 连)。

开始练习 →

第四步:网格图和拓扑序

写出数岛屿和 Kahn 拓扑排序,输出两样:四连通下的岛数 / 拓扑序的长度。

开始练习 →

交付:遍历 + 连通 + 最短步

这是这条路线的最终作品。把前四步的代码合起来,一次验完五条: DFS 序是 0,1,3,4,2,BFS 序是 0,1,2,3,4——顺序不同,走到的点集合相同 这张图有 2 块,大小分别是 5 和 2 0 到 4 最少 2 步,路径是 0,

开始练习 →

⚠️ 两种「最短」差在哪

无权图和带权图上说的"最短路",区别是【0】。

开始练习 →

什么时候可以直接用 BFS

步数少的那条,路程反而更长 两步 三步 求最短路时能直接用 BFS 的条件是【0】。

开始练习 →

带权图上要换成什么

步数少的那条,路程反而更长 两步 三步 边权重不一样时,求最短路要换成【0】。

开始练习 →

「松弛」一条边是什么意思

步数少的那条,路程反而更长 两步 三步 最短路算法里说的"松弛"是指【0】。

开始练习 →