数据结构实验之图论二:基于邻接表的广度优先搜索遍历
来源:互联网 发布:王牌特工知乎 编辑:程序博客网 时间:2024/05/29 16:01
数据结构实验之图论二:基于邻接表的广度优先搜索遍历
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索(BFS)遍历,输出从某个顶点出发的遍历序列。(同一个结点的同层邻接点,节点编号小的优先遍历)
输入
输入第一行为整数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顶点的无向边。
对于每组数据,第一行是三个整数k,m,t(0<k<100,0<m<(k-1)*k/2,0< t<k),表示有m条边,k个顶点,t为遍历的起始顶点。
下面的m行,每行是空格隔开的两个整数u,v,表示一条连接u,v顶点的无向边。
输出
输出有n行,对应n组输出,每行为用空格隔开的k个整数,对应一组数据,表示BFS的遍历结果。
示例输入
16 7 00 30 41 41 52 32 43 5
示例输出
0 3 4 2 5 1
提示
用邻接表存储。
来源
示例程序
- #include<stdio.h>
- #include<string.h>
- int k, m, t;
- int visit[200], b[200]; //visit是标记数组;b数组用来存放搜索的点,每次搜索一遍经排序后就输出
- struct node
- {
- int u, v;
- node *next;
- }*head[200]; //;邻接表
- void add(int u, int v)
- {
- node *p=new node;
- p->u=u;
- p->v=v;
- p->next=head[u];
- head[u]=p;
- }
- void bfs(int t)
- {
- node *p=new node;
- visit[t]=1;
- p=head[t];
- int s=1;
- while(p)
- {
- if(visit[p->v]==0)
- {
- b[s++]=p->v;
- visit[p->v]=1;
- p=p->next;
- }
- else
- {
- p=p->next;
- }
- for(int i=1;i<s;i++) //用冒泡把每次搜索到的与同一个节点同层的邻接点从小到大排序
- {
- for(int j=1;j<s-i;j++)
- {
- if(b[j]>b[j+1])
- {
- int t;
- t=b[j];
- b[j]=b[j+1];
- b[j+1]=t;
- }
- }
- }
- for(int i=1;i<s;i++) //把每次搜索到的节点输出
- printf(" %d", b[i]);
- for(int i=1;i<s;i++) //广度优先搜索
- bfs(b[i]);
- }
- int main()
- {
- int n, u, v;
- scanf("%d", &n);
- while(n--)
- {
- memset(visit,0,sizeof(visit));
- memset(head,NULL,sizeof(head));
- scanf("%d%d%d", &k, &m, &t);
- while(m--)
- {
- scanf("%d%d", &u, &v);
- add(u, v); //add函数建立邻接表
- add(v, u);
- }
- printf("%d", t); //先把最先需要搜索的点输出,即遍历的起始点
- bfs(t);
- printf("\n");
- }
- return 0;
- }
0 0
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 【2142】数据结构实验之图论二:基于邻接表的广度优先搜索遍历 (SDUT)
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- SDUT 2412 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历 (BFS)
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- SDUT 2142 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- SDUTACM 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- Android ORM数据库框架对比
- 海外优秀资源清单,建议中高级人材收藏
- 编写C++中的两个类 一个只能在栈中分配空间 一个只能在堆中分配
- [初学hadoop]错误信息:Wrong FS: hdfs://localhost:9000/user/... expected:&nb
- 黑马程序员---OC基础---内存管理(MRC、ARC)
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- Apache+Tomcat负载均衡两种session共享方式的设置
- NYOJ 305 表达式求值(递归)
- 【leetcode】232. Implement Queue using Stacks
- 经典排序算法之直接插入排序
- UI_07导航控制器
- poj 1426
- 传统创业 vs. 精益创业:为什么说项目经理已经名存实亡
- windows下搭建git的SSH服务器