五项一起对得上吗

运行下面这段程序: 本节的图:七个点,边 0-1、0-2、1-3、2-4、3-4、5-6;邻接表 G 里每个点的邻居按编号从小到大排。 六门课的先修关系:0→2、1→2、2→3、2→4、3→5、4→5(邻接表 COURSE)。 #inclu

开始练习 →

第一步两种遍历

最终作品第一步:bfs 已经写好,补全 DFS 的 go。输出 2 号在两个顺序里的位次(从 1 数起),用 / 拼起来(DFS 在前)。 本节的图:七个点,边 0-1、0-2、1-3、2-4、3-4、5-6;邻接表 G 里每个点的邻居按编

开始练习 →

第二步连通分量

补全 blocks,输出三样:块数 / 第一块多大 / 第二块多大。 本节的图:七个点,边 0-1、0-2、1-3、2-4、3-4、5-6;邻接表 G 里每个点的邻居按编号从小到大排。 (本题用 g++ -std=c++17 -O0 编译。

开始练习 →

第三步最短步数和路径

dist 已经写好,补全 bfs_path,输出两样:0 到 4 的步数 / 这条路径(路径内部用 - 连)。 本节的图:七个点,边 0-1、0-2、1-3、2-4、3-4、5-6;邻接表 G 里每个点的邻居按编号从小到大排。 (本题用 g

开始练习 →

第四步网格和拓扑序

kahn 已经写好。补全 islands,输出两样:四连通下的岛数 / 六门课拓扑序的长度。 本节的网格(四行四列,1 是陆地,0 是海):1100 / 1001 / 0010 / 1000。 六门课的先修关系:0→2、1→2、2→3、2→

开始练习 →

交付遍历连通最短步

这是这条路线的最终作品。其余函数都已写好,补全 bfs 和 kahn,然后一次验完五条:DFS 与 BFS 走到的点集合相同;这张图 2 块、大小 5 和 2;0 到 4 最少 2 步、路径 0-2-4,DFS 找到的那条要 3 步;网格四

开始练习 →

为什么要用随机数据对拍

真机题的 check 会用每次现造的随机迷宫、随机网格来测你的程序,这是为了【0】。

开始练习 →

写网格最少几步

场景:实验机上 ~/work/graph/grid.cpp 读一张迷宫('.' 空地、'#' 墙、S 起点、T 终点),要输出 S 到 T 的最少步数,可 bfs 还是空的。 任务:补全 bfs:每步只能上下

开始练习 →

一百五十万行输出限时

场景:~/work/graph/deg.cpp 输出每个点的度数,一行一个。结果是对的,可点数到 150 万时要跑好几秒。 任务:改写 deg.cpp,让 150 万个点在 2 秒内输出完,结果不变。make 编译(-O2),可以用 tim

开始练习 →

修好出队才标记

场景:~/work/graph/bfs.cpp 做 BFS,输出访问顺序和一共入队几次。可访问顺序里有的点出现了好几次,入队次数也比点数多。 任务:修好标记 visited 的时机,让每个点只入队一次。make 编译后用 sample.tx

开始练习 →