数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历
来源:互联网 发布:linux oracle 卸载 编辑:程序博客网 时间:2024/06/09 22:29
Problem Description
给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索(BFS)遍历,输出从某个顶点出发的遍历序列。(同一个结点的同层邻接点,节点编号小的优先遍历)
Input
输入第一行为整数n(0< n <100),表示数据的组数。
对于每组数据,第一行是三个整数k,m,t(0<k<100,0<m<(k-1)*k/2,0< t<k),表示有m条边,k个顶点,t为遍历的起始顶点。
下面的m行,每行是空格隔开的两个整数u,v,表示一条连接u,v顶点的无向边。
Output
输出有n行,对应n组输出,每行为用空格隔开的k个整数,对应一组数据,表示BFS的遍历结果。
Example Input
16 7 00 30 41 41 52 32 43 5
Example Output
0 3 4 2 5 1
code:
#include <stdio.h>
#include <string.h>
int map[110][110];
int visit[110];
int id[110];
int in = 1, out = 0;
int k, m, t;
void Bfs(int u)
{
int i;
out++;
for(i = 0;i<k;i++)
{
if(map[u][i] == 1&&visit[i] == 0)//visit的序号表示序号的点是否被访问过;
{
id[in++] = i;//用来保存访问的次序;
visit[i] = 1;
}
}
if(out<=in) Bfs(id[out]);//将与此点相邻的所有点进行遍历,层层递归;
}
int main()
{
int u, v;
int n, i;
scanf("%d", &n);
while(n--)
{
scanf("%d%d%d", &k, &m, &t);
memset(map, 0, sizeof(map));
memset(visit, 0, sizeof(visit));
memset(id, 0, sizeof(id));
for(i = 0;i<m;i++)
{
scanf("%d%d", &u, &v);
map[u][v] = map[v][u] = 1;//1表示两点之间可达,0表示不可达;
}
id[0] = t;
visit[t] = 1;
Bfs(t);
for(i = 0;i<k;i++)
{
if(i == k-1) printf("%d\n", id[i]);
else printf("%d ", id[i]);
}
}
}
#include <string.h>
int map[110][110];
int visit[110];
int id[110];
int in = 1, out = 0;
int k, m, t;
void Bfs(int u)
{
int i;
out++;
for(i = 0;i<k;i++)
{
if(map[u][i] == 1&&visit[i] == 0)//visit的序号表示序号的点是否被访问过;
{
id[in++] = i;//用来保存访问的次序;
visit[i] = 1;
}
}
if(out<=in) Bfs(id[out]);//将与此点相邻的所有点进行遍历,层层递归;
}
int main()
{
int u, v;
int n, i;
scanf("%d", &n);
while(n--)
{
scanf("%d%d%d", &k, &m, &t);
memset(map, 0, sizeof(map));
memset(visit, 0, sizeof(visit));
memset(id, 0, sizeof(id));
for(i = 0;i<m;i++)
{
scanf("%d%d", &u, &v);
map[u][v] = map[v][u] = 1;//1表示两点之间可达,0表示不可达;
}
id[0] = t;
visit[t] = 1;
Bfs(t);
for(i = 0;i<k;i++)
{
if(i == k-1) printf("%d\n", id[i]);
else printf("%d ", id[i]);
}
}
}
阅读全文
0 0
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- Android studio3.0导入依赖 No cached version of com.github.
- 南昌.net技术交流QQ群:13721576 欢迎加入!
- 带参数的mixin
- 由pdm反向生成cdm,即由物理模型,反向生成逻辑模型;报错,怎么办?
- 找到二叉树中符合搜索二叉树条件的最大拓扑结构
- 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历
- 【MySQL】MySQL 5.7 "Your password has expired.To log in you must change it using a client that suppor"
- opencv2.4.9:为caffe编译精简的opencv_core,opencv_imgproc,opencv_highgui全静态库
- tp5 验证码浏览器中显示黑屏的解决方案
- 使用VO绑定页面参数(ssh)
- DeviceApi CMApi User Hive Impersonation
- ListView的属性详解和探究
- watch命令及使用例子
- sql 创建联合主键