交付:遍历 + 连通 + 最短步
这是这条路线的最终作品。把前四步的代码合起来,一次验完五条: DFS 序是 0,1,3,4,2,BFS 序是 0,1,2,3,4——顺序不同,走到的点集合相同 这张图有 2 块,大小分别是 5 和 2
阅读更多 →
第四步:网格图和拓扑序
写出数岛屿和 Kahn 拓扑排序,输出两样:四连通下的岛数 / 拓扑序的长度。
阅读更多 →
第三步:最短步数和路径
写出 BFS 求最短步数和还原路径的代码,输出两样:0 到 4 的步数 / 这条路径(路径用 - 连)。
阅读更多 →
第二步:连通分量
写出 blocks,输出三样:块数 / 第一块多大 / 第二块多大。
阅读更多 →
第一步:两种遍历
最终作品第一步:写出 dfs 和 bfs,从 0 出发各跑一遍,找出 2 号在两个顺序里的位次(从 1 数起),拼起来输出(DFS 在前)。
阅读更多 →
五项一起对得上吗
运行下面这段程序: def dfs(g, s): seen = set() out = [] def go(u): seen.add(u) ou
阅读更多 →
交付图遍历的解要验什么
把一个图遍历的解交出去,最该验的是【0】。
阅读更多 →
拿到一个"网络"问题先做什么
要把一个实际问题变成图问题,第一件事是【0】。
阅读更多 →
⚠️ 验一个顺序是不是合法拓扑序
补全 valid(order, g):检查 order 里每条边都从前指到后。 验两个顺序,拼起来输出:[0,1,2,3,4,5] 和 [0,1,3,2,4,5]。
阅读更多 →
⚠️ 图里有环会怎样
在原来的六个点上多加一条 5→1,就出现了一个环。用同一个 kahn 各跑一遍。 把两次排出来的长度拼起来输出(无环的在前)。
阅读更多 →