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

Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic

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

1
6 7 0
0 3
0 4
1 4
1 5
2 3
2 4
3 5

Example Output

0 3 4 2 5 1

Hint

用邻接表存储。

DQE:

基于邻接表的图的广度优先搜索,利用栈纠正创建弧链表时颠倒的邻接点大小顺序。
  1 #include <iostream>
  2 #include <cstdio>
  3 #include <queue>
  4 #include <stack>
  5 using namespace std;
  6
  7 #define MVN 110
  8
  9 typedef struct ArcNode
 10 {
 11     int adj;
 12     ArcNode *next;
 13     char *info;
 14 }AN;    //弧结点
 15
 16 typedef struct VNode
 17 {
 18     int x;
 19     AN *first;
 20 }VN;    //顶点节点
 21
 22 typedef struct ALGraph
 23 {
 24     VN vex[MVN];
 25     int vexn,arcn;
 26     int s;
 27 }ALG;    //基于邻接表的图
 28
 29 void creat(ALG &G)
 30 {
 31     int i,j,k;
 32     for(k=0;k<G.vexn;k++)
 33         G.vex[k].first=NULL;
 34     for(k=0;k<G.arcn;k++)
 35     {
 36         scanf("%d %d",&i,&j);
 37         AN *ia=new AN,*ja=new AN;
 38         ia->adj=j;
 39         ja->adj=i;
 40         ia->next=G.vex[i].first;
 41         ja->next=G.vex[j].first;
 42         G.vex[i].first=ia;
 43         G.vex[j].first=ja;
 44     }
 45 }
 46
 47 void BFS(ALG &G)
 48 {
 49     int i;
 50     queue <int> Q;
 51     stack <int> S;
 52     bool f[MVN]={false};
 53     Q.push(G.s);
 54     while(!Q.empty())
 55     {
 56         i=Q.front();Q.pop();
 57         if(!f[i])
 58         {
 59             AN *p=G.vex[i].first;
 60             while(p)
 61             {
 62                 S.push(p->adj);
 63                 p=p->next;
 64             }
 65             //利用栈纠正临接点顺序
 66             while(!S.empty())
 67             {
 68                 Q.push(S.top());S.pop();
 69             }
 70             if(i==G.s)
 71                 printf("%d",i);
 72             else
 73                 printf(" %d",i);
 74             f[i]=true;
 75         }
 76     }
 77     printf("\n");
 78 }
 79
 80 int main()
 81 {
 82     int t;
 83     scanf("%d",&t);
 84     while(t--)
 85     {
 86         ALG G;
 87         scanf("%d %d %d",&G.vexn,&G.arcn,&G.s);
 88         creat(G);
 89         BFS(G);
 90     }
 91     return 0;
 92 }
 93
 94 /***************************************************
 95 User name: ***
 96 Result: Accepted
 97 Take time: 0ms
 98 Take Memory: 156KB
 99 Submit time: 2016-11-18 19:51:04
100 ****************************************************/

转载于:https://www.cnblogs.com/Leroscox/p/6034491.html

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

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

    题目描述 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索(BFS)遍历,输出从某个顶点出发的遍历序列.(同一个结点的同层邻接点,节点编号小的优先遍历) 输入 输入第一行为整数n(0< ...

  2. SDUT 3399 数据结构实验之排序二:交换排序

    数据结构实验之排序二:交换排序 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 冒泡排序和快 ...

  3. sdut 3341数据结构实验之二叉树二:遍历二叉树

    数据结构实验之二叉树二:遍历二叉树 Time Limit: 1000MS Memory Limit: 65536K Problem Description 已知二叉树的一个按先序遍历输入的字符序列,如 ...

  4. SDUT _2117 数据结构实验之链表二:逆序建立链表

    点击打开链接 数据结构实验之链表二:逆序建立链表 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem D ...

  5. SDUT OJ 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)

    数据结构实验之图论五:从起始点到目标点的最短步数(BFS) Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss P ...

  6. a - 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历_数据结构--图

    故事凌 今天 基本知识点 图可说是所有数据结构里面知识点最丰富的一个, 自己笨的知识点如下: 阶(oRDER), 度: 出度(out-Degree), 入度(in-Degree) 树(Tree), 森 ...

  7. 数据结构实验之图论二:图的深度遍历(DFS)

    Description 请定一个无向图,顶点编号从0到n-1,用深度优先搜索(DFS),遍历并输出.遍历时,先遍历节点编号小的. Input 输入第一行为整数n(0 < n < 100), ...

  8. python扫雷 广度优先_基于邻接矩阵的广度优先搜索遍历(BFS)

    数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历 Time Limit: 1000MS Memory limit: 65536K 题目描述 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索( ...

  9. SDUT 2141 【TEST】数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历

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

最新文章

  1. QQ超时不能刷新好友接收发送信息
  2. (二十一)unity4.6学习Ugui中文文档-------交互-Supported Events amp; Raycasters
  3. Java爬虫——网易云热评爬取
  4. Eclipse导入类库【Java】
  5. 如何在Power BI Desktop报表中使用Web数据源
  6. curl error code 60 51 代码解决方式
  7. 易用宝项目记录day7-权限与菜单
  8. 自大型人格分析,如何改变自大型性格?
  9. mx550和锐炬xe显卡差距大 锐炬xe显卡和mx550区别哪个好
  10. 达梦数据库实例服务无法启动(一)
  11. CC26xx([CortexM3)的Power Reset and Clock
  12. 怎样用matlab把视频转gif动画,Matlab制作视频并转换成gif动态图的两种方法
  13. 运行错误:view size is not compatible with input tensor‘s size and stride (at least
  14. mac键盘修改工具karabiner(禁用command+Q)
  15. python项目七:自建公告板
  16. 旅游定制服务|基于SSM实现旅游个性化定制网站平台
  17. 还在不停切换聊天窗口进行回复的客服请看过来
  18. [USACO3.2]Magic Squares 魔板
  19. JVM理解其实并不难!
  20. 高级计量经济学及stata应用 学习笔记② 短面板

热门文章

  1. MPEG2简单码流分析
  2. 鸿蒙对抗谷歌,华为下定决心对抗谷歌,打出第一张王牌,鸿蒙系统更进一步
  3. android c语言串口通信,安卓串口通信能用的modebus CRC16计算,附对应的C语言CRC16
  4. mysql webmail ubuntu12.04 imap_Ubuntu 12.04下搭建Web网站服务器 (MySQL+PHP+Apache环境)教程...
  5. 2021 年百度之星·程序设计大赛 - 初赛二 1002 随机题意(区间贪心)
  6. php 发送网络命令,linux命令经典用法与配置收录
  7. 由一维数组创建小根堆
  8. 玲珑杯round11-B:萌萌哒的第二题
  9. opencv cv.findContours 函数详解
  10. [debug] PyCharm 退出 pytest in XXX.py,恢复run XXX.py