标准BFS用std::queue管理待访节点、std::vector记录访问状态;需在入队时立即标记“已入队”,避免重复入队;邻接表为vector,起始节点入队前即设visited[start]=true。

用 std::queue 和 std::vector 实现标准 BFS 遍历
广度优先搜索在 C++ 中最常用、最稳妥的实现方式是配合 std::queue 管理待访问节点,用 std::vector 或 std::vector 记录访问状态。不推荐手写队列或用 std::stack 替代——后者会变成 DFS。
常见错误是把邻接点直接压入队列却不标记已入队,导致重复入队甚至死循环。正确做法是:**发现未访问邻居时,立即标记为“已入队”(而非“已访问”),再入队**。
- 图用邻接表表示:
vector,索引为节点编号> - 访问数组建议用
vector,空间省;但注意它不是标准容器,不能取地址,若需调试可临时换vector - 起始节点入队前就要设
visited[start] = true
queue>
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











