图的遍历 广度优先遍历(爱思创)
前言:
这篇文章还是是为了帮助一些
像我这样的菜鸟
找到简单的题解
问题描述:
读入一个用邻接矩阵存储的无向连通图,输出它的广度(宽度)优先遍历序列。
输入格式
第一行一个正整数 n(2≤n≤100),表示图中顶点数。
接下来是一个 n×n 的邻接矩阵,a[i][j]=1 表示顶点 i 和顶点 j 之间有直接边相连,a[i][j]=0a 表示没有直接边相连。
保证 i=j时,a[i][j]=0,并且 a[i][j]=a[j][i]。
输出格式
输出从顶点 1 开始,对该图进行宽度优先遍历得到的顶点序列,每两个数之间用一个 -
分隔。
思考:如果不是连通图,比如某个顶点 x 孤立在外,即邻接矩阵中的 a[x][j]=0,a[i][x]=0,该如何处理?
样例输入
8 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0
样例输出
1-2-3-4-5-7-8-6
问题提示
问题解析:
只需要把上一题的DFS改为BFS即可
非常简单
直接上代码了
图的遍历 深度优先遍历(爱思创)_吾乃狙击神蛐的博客-CSDN博客
代码BFS部分:
queue<int> q;
void bfs(int x)
{vis[x]=1;q.push(x);//入队while(!q.empty())//判空{int cur=q.front();//存储队首for(int i=1;i<=n*2;i++){if(g[cur][i]==1 && vis[i]==0){q.push(i);vis[i]=1;//打标记}}if(q.front()!=1) cout<<"-"<<q.front();//输出答案q.pop();//别忘了出队}cout<<endl;return ;
}
完整代码:
#include<bits/stdc++.h>
using namespace std;
int g[1001][1001],vis[1001];
int n,m;
queue<int> q;
void bfs(int x)
{vis[x]=1;q.push(x);while(!q.empty()){int cur=q.front();for(int i=1;i<=n*2;i++){if(g[cur][i]==1 && vis[i]==0){q.push(i);vis[i]=1;}}if(q.front()!=1) cout<<"-"<<q.front();q.pop();}cout<<endl;return ;
}
int main()
{cin>>n;int x,y;for(int j = 1 ; j <= n ;j++){for(int i = 1 ; i <= n ;i++){cin>>g[j][i];//模仿上一题输入} }cout<<1;bfs(1);return 0;
}
如果BFS不熟可以看我之前的文章
c++二叉树BFS3题解(爱思创)_吾乃狙击神蛐的博客-CSDN博客
AC
图的遍历 广度优先遍历(爱思创)相关推荐
- 【图】深度优先遍历 广度优先遍历
文章目录 一.广度优先遍历 二.深度优先遍历 深度优先遍历和广度优先遍历是遍历图的两种常见方式,接下来就通过这两种方式来实现一下图具体遍历的过程 当我位于游乐园的景区 A 时,为了玩遍所有的景区我们有 ...
- 背包问题 疯狂采药(爱思创)(完全背包)
前言: 这篇文章还是是为了帮助一些 像我这样的菜鸟 找到简单的题解 也是为了普及一道新题 问题描述: LiYuxiang 是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望 ...
- 图 深度优先遍历 广度优先遍历 非递归遍历 图解算法过程
图的邻接矩阵表示 通常图的表示有两种方法:邻接矩阵,邻接表. 本文用邻接矩阵实现,一是代码量更少,二是代码风格也更贴近C语言.但不论是图的哪种实现方式,其基本的实现思想是不变的. 1:节点的信息,我们 ...
- 图之遍历--广度优先遍历
何为广度优先遍历呢? 广度优先遍历(BFS),又叫宽度优先搜索或横向优先搜索,是从根结点开始沿着树的宽度搜索遍历,将离根节点最近的节点先遍历出来,在继续深挖下去. 基本思想是: 1.从图中某个顶点V0 ...
- 八数码宽度优先搜索python代码_图之遍历--广度优先遍历
何为广度优先遍历呢? 广度优先遍历(BFS),又叫宽度优先搜索或横向优先搜索,是从根结点开始沿着树的宽度搜索遍历,将离根节点最近的节点先遍历出来,在继续深挖下去. 基本思想是: 1.从图中某个顶点V0 ...
- 图的深度广度优先遍历(DFC与BFC)JavaScript版
graph.js 创建一个js文件用于表示图这个类型,这个对象的键为节点,所对应的值为这个节点所连接的节点. const graph={0:[1,2],1:[2],2:[0,3],3:[3] }; m ...
- 图深度优先、广度优先遍历(java)
一.图的遍历 图的遍历,即是对结点的访问.一个图有那么多个结点,如何遍历这些结点,需要特定策略,一般有两种访问策略:(1)深度优先遍历(2)广度优先遍历深度优先遍历基本思想. 二.深度优先遍历 图的深 ...
- 【数据结构】图的深度优先遍历 广度优先遍历
文件操作比直接输入方便许多 #include <stdio.h> #include <stdlib.h> #include <string.h> #define M ...
- Karen and Coffee 爱思创题解
前言: 本题为作业 题目描述 Karen 喜欢咖啡. 她有 n 本食谱,第 i 本食谱包含两个数 li,ri,表示这本食谱推荐用 [li,ri] 之间的温度(包含 li.ri)来煮咖啡. Ka ...
最新文章
- seaborn可视化displot绘制直方图(histogram)并通过axvline函数在直方图中添加均值(mean)竖线(自定义均值竖线色彩)
- python程序员工作怎样-怎样才能成为一名Python程序员
- maven的启动类和MAVEN_OPTS参数
- Python的操作符重载
- 找工作笔试面试那些事儿(10)---SQL语句总结
- mysql的join算法_mysql的Join算法-阿里云开发者社区
- javascript 文件的同步加载与异步加载
- 基于多源数据画像的失败用例智能分析
- 现在,TensorRT 4开放下载了
- [转载]程序员的激情其实是一种痛苦
- phpcms V9 栏目管理
- 土地调查图斑编号_土地年度变更调查“图斑类型”说明
- Java基础程序设计的报告
- mega linux教程,LINUX 安装MegaRAID Storage Manager (MSM)安装使用教程.doc
- Matlab中计算图像的灰度值
- python制作好看的界面_python漂亮界面
- java 图形化编程_java图形化编程
- 玩客云刷ARMBIAN当服务器过程记录
- 微软2018年重组背后,扒一扒受影响的人与事
- 是什么偷走了我们浓浓的年味?
热门文章
- 【Linux】深入理解Shell用法,从入门到精通
- iOS开发者必备:App Store营销广告指南
- word编号中的正规形式编号是什么
- matplotlib中cla/clf/close用法及相关清除效果
- 编写一个长度至少五 5 的字典,其中姓名为键和性别为值;请编写一个程序,删除性别为男的员工信息。
- spring boot+mybatis+thymeleaf+pagehelper分页插件实现分页功能
- Xilinx Zynq UltraScale+ MPSoC VCU ROI Demo跑
- 唯品会王玉:老司机教你如何调教Presto和ClickHouse,应对业务难题!
- Javascript节点介绍
- 金融电商推广可行性活动概览