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

Time Limit: 1000MS Memory Limit: 65536KB

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. 1
  2. 6 7 0
  3. 0 3
  4. 0 4
  5. 1 4
  6. 1 5
  7. 2 3
  8. 2 4
  9. 3 5

Example Output

  1. 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=;k<G.vexn;k++)
  33. G.vex[k].first=NULL;
  34. for(k=;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 ;
  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. ****************************************************/

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

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

    http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2142&cid=1186 题目描述 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜 ...

  2. 基于邻接表的广度优先搜索遍历(bfs)

    题目:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2142&cid=1186 #include<stdio.h> #incl ...

  3. SDUT OJ 数据结构实验之排序二:交换排序

    数据结构实验之排序二:交换排序 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...

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

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

  5. SDUT 3363 数据结构实验之图论七:驴友计划

    数据结构实验之图论七:驴友计划 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 做为一个资深 ...

  6. SDUT 3362 数据结构实验之图论六:村村通公路

    数据结构实验之图论六:村村通公路 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 当前农村公 ...

  7. SDUT OJ 数据结构实验之图论十:判断给定图是否存在合法拓扑序列

    数据结构实验之图论十:判断给定图是否存在合法拓扑序列 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Prob ...

  8. SDUT OJ 数据结构实验之图论八:欧拉回路

    数据结构实验之图论八:欧拉回路 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...

  9. SDUT OJ 数据结构实验之图论六:村村通公路(最小生成树)

    数据结构实验之图论六:村村通公路 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descri ...

随机推荐

  1. 《Javascript高级程序设计》阅读记录(二):第四章

    这个系列之前文字地址:http://www.cnblogs.com/qixinbo/p/6984374.html 这个系列,我会把阅读<Javascript高级程序设计>之后,感觉讲的比较 ...

  2. BZOJ4808: 马

    BZOJ4808: 马 https://lydsy.com/JudgeOnline/problem.php?id=4808 分析: 黑白染色,求二分图最大匹配即可. 代码: #include < ...

  3. 用javascript实现base64编码器以及图片的base64编码

    前面的话 base-64作为常见的编码函数,在基本认证.摘要认证以及一些HTTP扩展中得到了大量应用.在前端领域,也常常把图片转换为base-64编码在网络中传输.本文将详细介绍base64的原理及用 ...

  4. 笔记:加 ly 不一定是副词

    笔记:加 ly 不一定是副词 加 ly 变副词,但有些单词以 ly 结尾,长得像副词,却是形容词. costly = cost + ly a costly item. 一件昂贵的物品. lovely ...

  5. DropShadowEffect导致下拉框控件抖动

    <!--<Border.Effect> <DropShadowEffect Direction="180" BlurRadius="1" ...

  6. commandLink/commandButton/ajax backing bean action/listener method not invoked (转)

    Whenever an UICommand component fails to invoke the associated action method or an UIInputelement fa ...

  7. CodeForces 620E:New Year Tree(dfs序+线段树)

    E. New Year Treetime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputout ...

  8. bootstrap简单的签收页面

    http://aqvatarius.com/themes/atlant/html/ui-icons.html <%@ Page Language="C#" AutoEvent ...

  9. IIS:配置参数

    ylbtech-IIS:配置参数 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   7.返回顶部   8.返回顶部   9.返回顶部   ...

  10. javaScript之NodeList

    NodeList对象 是DOM操作取出的集合(实际上是基于DOM结构动态查询的结果),用来保存一组有序的节点,可以通过位置来访问这些节点,它并不是array的实例. Nodelist最大的特点就是它的 ...