第 226 课
DFS 模板
🟢 入门 约 5 分钟
一句话理解
DFS 模板:标记、遍历邻居、必要时回溯。
为什么要学
先背清再改。
讲解
void dfs(u){ vis[u]=1; for v in g[u]: if !vis[v] dfs(v); }
需要恢复的场合 vis 要改回 0,那是回溯搜索。
例子
void dfs(int u) {
vis[u] = 1;
for (int v : g[u]) if (!vis[v]) dfs(v);
}
连通块式 DFS,标记不撤销。
常见错误
- 图有向、无向混用。
- 递归深度过大爆栈,改成显式栈。
练习 做完再看下一课
防止重复访问,通常用 ____ 数组
或 vis/visited。
在线练习 C++ 在浏览器里编译,代码不会上传 已通过
Ctrl / ⌘ + Enter 运行 · Tab 缩进
隐藏测试点只是界面不展示数据。题目 JSON 会下发到浏览器,可在开发者工具里看到,只适合自学,不是正式比赛评测。
进度保存在本机浏览器里。
左右方向键也可翻课