前言:

这篇文章还是是为了帮助一些

像我这样的菜鸟

找到简单的题解

问题描述:

读入一个用邻接矩阵存储的无向连通图,输出它的广度(宽度)优先遍历序列。

输入格式

第一行一个正整数 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

图的遍历 广度优先遍历(爱思创)相关推荐

  1. 【图】深度优先遍历 广度优先遍历

    文章目录 一.广度优先遍历 二.深度优先遍历 深度优先遍历和广度优先遍历是遍历图的两种常见方式,接下来就通过这两种方式来实现一下图具体遍历的过程 当我位于游乐园的景区 A 时,为了玩遍所有的景区我们有 ...

  2. 背包问题 疯狂采药(爱思创)(完全背包)

    前言: 这篇文章还是是为了帮助一些 像我这样的菜鸟 找到简单的题解 也是为了普及一道新题 问题描述: LiYuxiang 是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望 ...

  3. 图 深度优先遍历 广度优先遍历 非递归遍历 图解算法过程

    图的邻接矩阵表示 通常图的表示有两种方法:邻接矩阵,邻接表. 本文用邻接矩阵实现,一是代码量更少,二是代码风格也更贴近C语言.但不论是图的哪种实现方式,其基本的实现思想是不变的. 1:节点的信息,我们 ...

  4. 图之遍历--广度优先遍历

    何为广度优先遍历呢? 广度优先遍历(BFS),又叫宽度优先搜索或横向优先搜索,是从根结点开始沿着树的宽度搜索遍历,将离根节点最近的节点先遍历出来,在继续深挖下去. 基本思想是: 1.从图中某个顶点V0 ...

  5. 八数码宽度优先搜索python代码_图之遍历--广度优先遍历

    何为广度优先遍历呢? 广度优先遍历(BFS),又叫宽度优先搜索或横向优先搜索,是从根结点开始沿着树的宽度搜索遍历,将离根节点最近的节点先遍历出来,在继续深挖下去. 基本思想是: 1.从图中某个顶点V0 ...

  6. 图的深度广度优先遍历(DFC与BFC)JavaScript版

    graph.js 创建一个js文件用于表示图这个类型,这个对象的键为节点,所对应的值为这个节点所连接的节点. const graph={0:[1,2],1:[2],2:[0,3],3:[3] }; m ...

  7. 图深度优先、广度优先遍历(java)

    一.图的遍历 图的遍历,即是对结点的访问.一个图有那么多个结点,如何遍历这些结点,需要特定策略,一般有两种访问策略:(1)深度优先遍历(2)广度优先遍历深度优先遍历基本思想. 二.深度优先遍历 图的深 ...

  8. 【数据结构】图的深度优先遍历 广度优先遍历

    文件操作比直接输入方便许多 #include <stdio.h> #include <stdlib.h> #include <string.h> #define M ...

  9. Karen and Coffee 爱思创题解

    前言: 本题为作业 题目描述 Karen 喜欢咖啡. 她有 n 本食谱,第 i 本食谱包含两个数 li​,ri​,表示这本食谱推荐用 [li​,ri​] 之间的温度(包含 li.ri)来煮咖啡. Ka ...

最新文章

  1. seaborn可视化displot绘制直方图(histogram)并通过axvline函数在直方图中添加均值(mean)竖线(自定义均值竖线色彩)
  2. python程序员工作怎样-怎样才能成为一名Python程序员
  3. maven的启动类和MAVEN_OPTS参数
  4. Python的操作符重载
  5. 找工作笔试面试那些事儿(10)---SQL语句总结
  6. mysql的join算法_mysql的Join算法-阿里云开发者社区
  7. javascript 文件的同步加载与异步加载
  8. 基于多源数据画像的失败用例智能分析
  9. 现在,TensorRT 4开放下载了
  10. [转载]程序员的激情其实是一种痛苦
  11. phpcms V9 栏目管理
  12. 土地调查图斑编号_土地年度变更调查“图斑类型”说明
  13. Java基础程序设计的报告
  14. mega linux教程,LINUX 安装MegaRAID Storage Manager (MSM)安装使用教程.doc
  15. Matlab中计算图像的灰度值
  16. python制作好看的界面_python漂亮界面
  17. java 图形化编程_java图形化编程
  18. 玩客云刷ARMBIAN当服务器过程记录
  19. 微软2018年重组背后,扒一扒受影响的人与事
  20. 是什么偷走了我们浓浓的年味?

热门文章

  1. 【Linux】深入理解Shell用法,从入门到精通
  2. iOS开发者必备:App Store营销广告指南
  3. word编号中的正规形式编号是什么
  4. matplotlib中cla/clf/close用法及相关清除效果
  5. 编写一个长度至少五 5 的字典,其中姓名为键和性别为值;请编写一个程序,删除性别为男的员工信息。
  6. spring boot+mybatis+thymeleaf+pagehelper分页插件实现分页功能
  7. Xilinx Zynq UltraScale+ MPSoC VCU ROI Demo跑
  8. 唯品会王玉:老司机教你如何调教Presto和ClickHouse,应对业务难题!
  9. Javascript节点介绍
  10. 金融电商推广可行性活动概览