题目描述

代码框架如下:

输入

第一行输入t,表示有t个测试实例

第二行输入n,表示第1个图有n个结点

第三行起,每行输入邻接矩阵的一行,以此类推输入n行

第i个结点与其他结点如果相连则为1,无连接则为0,数据之间用空格隔开

以此类推输入下一个示例

输出

每行输出一个图的广度优先搜索结果,结点编号之间用空格隔开

样例输入

2
4
0 0 1 1
0 0 1 1
1 1 0 1
1 1 1 0
5
0 0 0 1 1
0 0 1 0 0
0 1 0 1 1
1 0 1 0 0
1 0 1 0 0

样例输出

0 2 3 1
0 3 4 2 1
 
#include<bits/stdc++.h>
using namespace std;
const int MaxLen=;
class Map
{
private:
bool Visit[MaxLen];
int Matrix[MaxLen][MaxLen];
int Vexnum;
void BFS(int v)
{
int w, u;
int i, k;
int *AdjVex= new int [MaxLen];
queue<int> q;
for(i= ; i< Vexnum; i++)
Visit[i]= false;
for(v= ; v< Vexnum; v++)
{
if(!Visit[v])
{
Visit[v]= true;
q.push(v);
while(!q.empty())
{
u= q.front();
cout<<u<<' ';
q.pop();
for(i= ; i< MaxLen; i++)
AdjVex[i]= -;
k=;
for(i= ;i<Vexnum;i++)
if(Matrix[u][i])
AdjVex[k++]=i;
i= ;
for(w= AdjVex[i]; w>= ; w= AdjVex[i++])
if(Visit[w]== false)
{
Visit[w]= true;
q.push(w);
}
}
}
}
} public :
void SetMatrix(int vnum,int mx[MaxLen][MaxLen])
{
int i,j;
Vexnum=vnum;
for(i=;i<MaxLen;i++)
for(j=;j<MaxLen;j++)
Matrix[i][j]=;
for(i=;i<Vexnum;i++)
for(j=;j<Vexnum;j++)
Matrix[i][j]=mx[i][j];
}
void BFSTraverse()
{
BFS();
}
};
int main()
{
int t;
cin>>t;
while(t--)
{
int n,i,j;
cin>>n;
int a[MaxLen][MaxLen];
for(i=;i<n;i++)
for(j=;j<n;j++)
cin>>a[i][j];
Map map;
map.SetMatrix(n,a);
map.BFSTraverse();
cout<<endl;
}
}

DS图遍历--广度优先搜索的更多相关文章

  1. DS图遍历--深度优先搜索

    DS图遍历--深度优先搜索 题目描述 给出一个图的邻接矩阵,对图进行深度优先搜索,从顶点0开始 注意:图n个顶点编号从0到n-1 代码框架如下: 输入 第一行输入t,表示有t个测试实例 第二行输入n, ...

  2. 【算法导论】图的广度优先搜索遍历(BFS)

    图的存储方法:邻接矩阵.邻接表 例如:有一个图如下所示(该图也作为程序的实例): 则上图用邻接矩阵可以表示为: 用邻接表可以表示如下: 邻接矩阵可以很容易的用二维数组表示,下面主要看看怎样构成邻接表: ...

  3. ACM题目————图的广度优先搜索

    题目描述 图的广度优先搜索类似于树的按层次遍历,即从某个结点开始,先访问该结点,然后访问该结点的所有邻接点,再依次访问各邻接 点的邻接点.如此进行下去,直到所有的结点都访问为止.在该题中,假定所有的结 ...

  4. 图的广度优先搜索(BFS)

    把以前写过的图的广度优先搜索分享给大家(C语言版) #include<stdio.h> #include<stdlib.h> #define MAX_VERTEX_NUM 20 ...

  5. [SOJ] 图的广度优先搜索

    Time Limit: 1sec    Memory Limit:256MB Description 读入图的邻接矩阵以及一个顶点的编号(图中顶点的编号为从1开始的连续正整数.顶点在邻接矩阵的行和列上 ...

  6. SDUT 2142 数据结构实验之图论二:基于邻接表的广度优先搜索遍历

    数据结构实验之图论二:基于邻接表的广度优先搜索遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Descript ...

  7. 数据结构和算法总结(一):广度优先搜索BFS和深度优先搜索DFS

    前言 这几天复习图论算法,觉得BFS和DFS挺重要的,而且应用比较多,故记录一下. 广度优先搜索 有一个有向图如图a 图a 广度优先搜索的策略是: 从起始点开始遍历其邻接的节点,由此向外不断扩散. 1 ...

  8. 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)

    图的遍历的定义: 从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次.(连通图与非连通图) 深度优先遍历(DFS): 1.访问指定的起始顶点: 2.若当前访问的顶点的邻接顶点有未被访问的,则 ...

  9. 图的遍历BFS广度优先搜索

    图的遍历BFS广度优先搜索 1. 简介 BFS(Breadth First Search,广度优先搜索,又名宽度优先搜索),与深度优先算法在一个结点"死磕到底"的思维不同,广度优先 ...

随机推荐

  1. SQL*Plus连接符拼接输出

    在日常工作中,可能需要使用重复的命令,修改的只是某个不同字段的值,可以使用连接字符串进行拼接 #本篇文档: 一.使用连接符拼接SQL 二.Spool输出查询结果 三.Spool输出xml/  html ...

  2. NUCLEO-F767ZI评测 NUCLEO-F767ZI入门教程CubeMX

    评测:http://www.21ic.com/eva/MCU/201606/679904.htm 入门教程

  3. 防止sql注入的函数addslashes()

    <?php $str = addslashes('Shanghai is the "biggest" city in China.'); echo($str); ?> ...

  4. POJ - 1474 :Video Surveillance (半平面交-求核)

    pro:顺时针给定多边形,问是否可以放一个监控,可以监控到所有地方,即问是否存在多边形的核. 此题如果两点在同一边界上(且没有被隔段),也可以相互看到. sol:求多边形是否有核.先给直线按角度排序, ...

  5. HDU5658:CA Loves Palindromic (回文树,求区间本质不同的回文串数)

    CA loves strings, especially loves the palindrome strings. One day he gets a string, he wants to kno ...

  6. matlab学习(1)strsplit与strtok

    strsplit函数用法: <1>默认使用空格符分割,返回一个cell数组 <2>也可以指定第二个参数进行分割 <3>第二个参数也可以时包含多个分隔符的元胞数组 & ...

  7. xdoj--1144 (合并模板)--有趣的优先队列(优先队列默认权值最大的数在前面)

    我觉得这道题出的很好 区别于“哈夫曼树” 因为事之多合并k个 理论说尽可能多合并. 然后我们看一个简单的例子 4 3 1 2 3 4  ——>6 4——>10 (6+10)=16: 1 2 ...

  8. vim 介绍安装 复制 剪切 粘贴

    1. vim 产生:对于linux 文件的编辑,最初是vi,然后对于其功能的扩展,就产生了vim vim 的安装 yum install vim 2.光标的移动 用得最多的就是方向键上的 上下左右,和 ...

  9. SQL-数据库操作-002

    数据库的创建:create database data_name on primary ( name=data_1, filename='D\Data\data_name.mdf', size=50m ...

  10. 【java编程】加密算法-对称加密及AES加密算法

    转载:https://www.jianshu.com/p/3840b344b27c?utm_campaign=maleskine&utm_content=note&utm_medium ...