C++中BFS使用队列按层遍历,以邻接表存储图,用visited数组防重访;对非连通图需遍历所有节点启动多次BFS;可扩展用于无权图最短路径、二分图判定等。
用C++实现图的广度优先搜索(BFS),核心是借助队列(queue)按层扩展访问节点,并用数组或集合标记已访问节点,避免重复入队。
邻接表适合稀疏图,用 vector 表示:下标为起点,内部 vector 存所有邻接点。
例如:边 (0→1), (0→2), (1→3),对应 graph[0] = {1,2},graph[1] = {3}。
以下代码输出 BFS 遍历顺序(也可改造成求最短距离、连通分量等):
#include#include #include #include using namespace std; void bfs(const vector >& graph, int start) { int n = graph.size(); vector visited(n, false); queue q; visited[start] = true; q.push(start); while (!q.empty()) { int u = q.front(); q.pop(); cout << u << " "; // 访问当前节点 // 遍历所有邻接点 for (int v : graph[u]) { if (!visited[v]) { visited[v] = true; q.push(v); } } } cout << endl; } // 示例用法 int main() { // 构建 4 个节点的有向图:0→1, 0→2, 1→3, 2→3 vector > graph(4); graph[0] = {1, 2}; graph[1] = {3}; graph[2] = {3}; // graph[3] 为空 bfs(graph, 0); // 输出:0 1 2 3 return 0; }
若图不连通,需对每个未访问节点启动一次 BFS:
i ∈ [0, n)
!visited[i] 就调用一次 BFS,可视为发现一个新连通分量u-v 要双向添加:graph[u].push_back(v); graph[v].push_back(u);
vector dist(n, -1) 记录距离,起始点 dist[start] = 0,每次入队时设 dist[v] = dist[u] + 1
int levelSize = q.size()),每轮处理完一层再继续基本上就这些。BFS 关键在于“先进先出”和“即时标记”,别漏判 visited 就不会死循环。
# go
# ai
# c++
# ios
# stream
# int
# 循环
# 遍历
# 最短
# 就不
# 也可
# 关键在于
# 会死
# 为空
# 过程中
# 需对
# 起始点
相关文章:
北京制作网站的公司,北京铁路集团官方网站?
盐城做公司网站,江苏电子版退休证办理流程?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
北京专业网站制作设计师招聘,北京白云观官方网站?
外贸公司网站制作哪家好,maersk船公司官网?
小型网站制作HTML,*游戏网站怎么搭建?
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
建站之星如何优化SEO以实现高效排名?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
如何在腾讯云服务器上快速搭建个人网站?
如何在自有机房高效搭建专业网站?
,制作一个手机app网站要多少钱?
如何在建站之星网店版论坛获取技术支持?
如何配置WinSCP新建站点的密钥验证步骤?
代刷网站制作软件,别人代刷火车票靠谱吗?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
寿县云建站:智能SEO优化与多行业模板快速上线指南
油猴 教程,油猴搜脚本为什么会网页无法显示?
如何通过万网虚拟主机快速搭建网站?
网站制作模板下载什么软件,ppt模板免费下载网站?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
微信小程序 input输入框控件详解及实例(多种示例)
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
制作宣传网站的软件,小红书可以宣传网站吗?
如何挑选高效建站主机与优质域名?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
建站VPS推荐:2025年高性能服务器配置指南
定制建站价位费用解析与套餐推荐全攻略
Thinkphp 中 distinct 的用法解析
建站之星图片链接生成指南:自助建站与智能设计教程
济南企业网站制作公司,济南社保单位网上缴费步骤?
公司门户网站制作流程,华为官网怎么做?
如何用花生壳三步快速搭建专属网站?
高端云建站费用究竟需要多少预算?
如何通过商城免费建站系统源码自定义网站主题?
宝塔新建站点为何无法访问?如何排查?
建站之星CMS五站合一模板配置与SEO优化指南
网站制作公司排行榜,抖音怎样做个人官方网站
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
智能起名网站制作软件有哪些,制作logo的软件?
建站之星Pro快速搭建教程:模板选择与功能配置指南
如何在景安服务器上快速搭建个人网站?
Python文件管理规范_工程实践说明【指导】
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
如何选择适合PHP云建站的开源框架?
*请认真填写需求信息,我们会在24小时内与您取得联系。