算法与数据结构实验5:图的深度和广度优先遍历(邻接矩阵)
来源:互联网 发布:英语教练淘宝没了 编辑:程序博客网 时间:2024/06/04 19:49
Description
给定一个无向连通图,顶点编号从0到n-1,用深度优先搜索(DFS)和广度优先搜索(BFS)遍历,输出从某个顶点出发的遍历序列。(同一个结点的同层邻接点,节点编号小的优先遍历)
Input
第一行是三个整数k,m,t(0<k<100,0<m<(k-1)*k/2,0<t<k),表示有k个顶点,m条边,t为遍历的起始顶点。 下面的m行,每行是空格隔开的两个整数u,v,表示一条连接u,v顶点的无向边。
Output
两行,每行为用空格隔开的k个整数,对应一组数据,分别表示DFS和BFS的遍历结果。
Sample Input
6 7 0
0 3
0 4
1 4
1 5
2 3
2 4
3 5
Sample Output
0 3 2 4 1 5
0 3 4 2 5 1
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<queue>#define Max_Vertex_Num 100using namespace std;typedef struct node{ int vex[Max_Vertex_Num+10];//顶点向量 int arc[Max_Vertex_Num+10][Max_Vertex_Num+10];//邻接矩阵 int vexnum,arcnum;//顶点数和边数} Mgraph;int visit[Max_Vertex_Num+10];//访问数组void CreatMGraph(Mgraph *G)//创建邻接矩阵{ for(int i=1; i<=G->arcnum; i++) { int a,b; cin>>a>>b; G->arc[a][b]=G->arc[b][a]=1;//无向图 }}void DFS(Mgraph *G,int k){ visit[k]=1; for(int i=0; i<G->vexnum; i++) if(G->arc[k][i]&&!visit[i]) { cout<<" "<<i; DFS(G,i); }}void DFS_Travel(Mgraph *G,int k){ memset(visit,0,sizeof(visit)); cout<<k; DFS(G,k);//先遍历一遍以k为顶点出发的所有点 for(int i=0; i<G->vexnum; i++) { if(!visit[i]) DFS(G,i); }}queue<int>q;void BFS(Mgraph *G,int k){ visit[k]=1; q.push(k); while(!q.empty()) { int t=q.front(); q.pop(); visit[t]=1; for(int i=0; i<G->vexnum; i++) { if(G->arc[t][i]&&!visit[i]) { cout<<" "<<i; visit[i]=1; q.push(i); } } }}void BFS_Travel(Mgraph *G,int k){ memset(visit,0,sizeof(visit)); cout<<k; BFS(G,k); for(int i=0; i<G->vexnum; i++) { if(!visit[i]) BFS(G,i); }}int main(){ Mgraph G; int k,m,t; cin>>k>>m>>t; G.vexnum=k; G.arcnum=m; CreatMGraph(&G); DFS_Travel(&G,t); cout<<endl; BFS_Travel(&G,t); cout<<endl;}
阅读全文
0 0
- 算法与数据结构实验5:图的深度和广度优先遍历(邻接矩阵)
- 图的邻接矩阵生成算法,深度优先遍历算法,广度优先遍历算法,Prime算法。):
- 无向图的邻接矩阵,深度优先遍历和广度优先遍历的递归与非递归算法
- 数据结构与算法专题之图——图的遍历(深度优先遍历和广度优先遍历)
- 邻接矩阵深度与广度优先遍历算法(c++实现)
- 【数据结构】邻接矩阵表示法的图的深度广度优先遍历递归和非递归遍历
- 【数据结构】邻接矩阵表示法的图的深度广度优先遍历递归和非递归遍历
- 【数据结构实验】图的深度优先/广度优先遍历
- 【图】图的邻接矩阵存储和广度、深度优先遍历
- 图:广度深度优先遍历(邻接矩阵)
- 数据结构实验图论:基于邻接矩阵/邻接表的广度优先搜索遍历(BFS)
- [SDUT](2141)数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历 ---BFS(图)
- 图(邻接矩阵)的深度、广度优先遍历
- 数据结构---图的广度优先遍历和深度优先遍历
- 算法与数据结构(2) -- 二叉树深度优先遍历和广度优先遍历
- 无向图的邻接矩阵,深度优先遍历广度优先遍历的递归与非递归算法
- 图的遍历(1)邻接矩阵的深度和广度优先遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- linux常用指令
- 初学Html5+CSS之表单的省级联动
- NestedScrollView
- Java死锁范例以及如何分析死锁
- excel中如何添加下拉选择框
- 算法与数据结构实验5:图的深度和广度优先遍历(邻接矩阵)
- jsp/servlet第四章第四节request范围实例
- viewpager无限轮播(从网络上获取图片小圆点)
- Java设计模式之命令模式
- linux目录结构
- PhpStorm2017获取注册码网址
- vertical-align垂直居中无效
- 1-bit and 2-bit Characters
- ubuntu安装pytorch以及torchnet