当前位置: 首页 > news >正文

东方博宜OJ 2053:图的 bfs 遍历 ← bfs + 链式前向星 / 邻接矩阵

【题目来源】
https://oj.czos.cn/p/2053

【题目描述】
一个有 n 个结点的无向连通图,这些结点以编号:1,2,...,n 进行编号,现给出结点间的连接关系。
请以结点 1 为起点,按广度优先搜索(bfs)、优先访问小编号结点的顺序遍历并输出该图。

【输入格式】
第一行为两整数,n 和 e,表示 n 个顶点,e 条边。(2≤n,e≤10)
以下 e 行每行两个数,表示两个结点是连通的。

【输出格式】
只有一行,为节点按照广度优先、小编号结点优先访问的结果。

【输入样例】
5 7
1 2
1 3
1 4
2 4
2 5
3 5
4 5​​​​​​​

【输出样例】
1 2 3 4 5

【数据范围】
2≤n,e≤10

【算法分析】
● 链式前向星:https://blog.csdn.net/hnjzsyjyj/article/details/139369904
大佬 yxc 指出“链式前向星”就是“多单链表”,每条单链表基于“头插法”并用 e[]、ne[]、h[] 、val[] 等数组进行模拟创建。其中:
e[idx]:存储序号为 idx 的边的终点值
ne[idx]:存储序号为 idx 的边指向的边的序号(模拟链表指针)‌
h[a]:存储头结点 a 指向的边的序号
val[idx]:存储序号为 idx 的边的权值(可选)​​​​​​​

【算法代码一:链式前向星】
本代码需注意的是“小编号结点优先访问”。
请详阅代码,注意实现技巧。特别注意第 20 行的 vector<int> v; 以及第 26 行的 sort(v.begin(),v.end());。

#include <bits/stdc++.h>
using namespace std;const int N=12;
int h[N],e[N<<1],ne[N<<1],idx;
bool st[N];void add(int a,int b) {e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}void bfs(int u) {queue<int> q;q.push(u);st[u]=true;cout<<u<<" ";while(!q.empty()) {int t=q.front();q.pop();vector<int> v;for(int i=h[t]; i!=-1; i=ne[i]) {int j=e[i];if(!st[j]) v.push_back(j);}sort(v.begin(),v.end());for(int x:v) {if(st[x]) continue;st[x]=true;q.push(x);cout<<x<<" ";}}
}int main() {int n,m;cin>>n>>m;memset(h,-1,sizeof h);while(m--) {int a,b;cin>>a>>b;add(a,b),add(b,a);}bfs(1);return 0;
}/*
in:
5 7
1 2
1 3
1 4
2 4
2 5
3 5
4 5out:
1 2 3 4 5
*/

【算法代码二:邻接矩阵】

#include <bits/stdc++.h>
using namespace std;const int N=12;
int g[N][N];
bool st[N];
int n,m;void bfs(int u) {queue<int> q;q.push(u);st[u]=true;cout<<u<<" ";while(!q.empty()) {int t=q.front();q.pop();for(int i=1; i<=n; i++) {if(g[t][i]==1 && !st[i]) {st[i]=true;q.push(i);cout<<i<<" ";}}}
}int main() {cin>>n>>m;while(m--) {int a,b;cin>>a>>b;g[a][b]=1,g[b][a]=1;}bfs(1);return 0;
}/*
in:
5 7
1 2
1 3
1 4
2 4
2 5
3 5
4 5out:
1 2 3 4 5
*/





【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/139369904
https://blog.csdn.net/hnjzsyjyj/article/details/125801217
https://blog.csdn.net/hnjzsyjyj/article/details/155916091
https://blog.csdn.net/hnjzsyjyj/article/details/155915115
 

http://www.jsqmd.com/news/267441/

相关文章:

  • 医院电子病历系统如何集成百度UE的PDF签名导入功能?
  • 2026 年 1 月蒸汽防爆烘箱厂家推荐排行榜,大型/高温/苏州地区蒸汽防爆烘箱,参数解析与价格指南,专业防爆与高效烘干实力之选 - 企业推荐官【官方】
  • 基于STM32单片机智能搬运机器人4维机械臂TFT彩屏摇杆设计套件132(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 【日记】突破了风车,然后跟朝哥聊了很久的天(2810 字)
  • 基于STM32单片机指纹考勤门禁签到打卡无线APP云平台设计套件127(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • PaddleOCR移动端实战攻略:从问题到解决方案的全链路开发
  • 基于STM32单片机智能无线可视化门铃语音摄像视频监控设计24-089(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 我们的系统经常出现d3dx9_42.dll丢失问题 免费下载方法分享
  • 艾体宝洞察 | 2025 网络安全回顾与启示:当 “人” 成为企业最大风险与最强防线
  • AMD ROCm深度学习环境终极配置指南:Windows 11快速上手
  • 如果你不会写诗,就看看读读这些AI诗歌,和它学一下
  • LinkAndroid手机连接助手:从入门到精通的完整使用指南
  • 高效VR视频下载全攻略:N_m3u8DL-RE专业工具深度解析
  • 3大实战策略:轻松解决LightGBM模型Java部署难题
  • 导师推荐!本科生必用AI论文网站TOP8测评
  • 百度网盘直链解析工具使用指南:轻松获取高速下载地址
  • GHelper终极指南:掌握华硕笔记本性能调节与风扇控制技巧
  • 百度网盘提取码智能获取工具:告别繁琐搜索的终极方案
  • oii一键生成动漫,oii邀请码,oiioii邀请码2026年1月19日最新
  • MRIcroGL医学影像可视化:专业级3D渲染技术深度解析
  • Tsukimi播放器:免费开源的Emby客户端,重新定义你的观影体验
  • Honey Select 2汉化优化补丁完整使用指南
  • Cogito v2 70B:AI双模式推理与128K长文本解析
  • Material Design 3音乐播放器music-you深度解析
  • Qwen-Image 参考图url如何解决?
  • 基于28335的旋变软解码:技术亮点剖析
  • AList快速部署完整指南:轻松搭建个人云盘系统
  • 2026年高性价比全案装修设计专业公司排名,欢乐佳园排第几? - 工业品牌热点
  • DeepSeek-Coder-V2实战指南:解决开发者的真实痛点
  • 今天你要来点 puzzle 吗?