SDUT 2142 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
数据结构实验之图论二:基于邻接表的广度优先搜索遍历
Problem Description
Input
对于每组数据,第一行是三个整数k,m,t(0<k<100,0<m<(k-1)*k/2,0< t<k),表示有m条边,k个顶点,t为遍历的起始顶点。
下面的m行,每行是空格隔开的两个整数u,v,表示一条连接u,v顶点的无向边。
Output
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:
#include <iostream>
#include <cstdio>
#include <queue>
#include <stack>
using namespace std; #define MVN 110 typedef struct ArcNode
{
int adj;
ArcNode *next;
char *info;
}AN; //弧结点 typedef struct VNode
{
int x;
AN *first;
}VN; //顶点节点 typedef struct ALGraph
{
VN vex[MVN];
int vexn,arcn;
int s;
}ALG; //基于邻接表的图 void creat(ALG &G)
{
int i,j,k;
for(k=;k<G.vexn;k++)
G.vex[k].first=NULL;
for(k=;k<G.arcn;k++)
{
scanf("%d %d",&i,&j);
AN *ia=new AN,*ja=new AN;
ia->adj=j;
ja->adj=i;
ia->next=G.vex[i].first;
ja->next=G.vex[j].first;
G.vex[i].first=ia;
G.vex[j].first=ja;
}
} void BFS(ALG &G)
{
int i;
queue <int> Q;
stack <int> S;
bool f[MVN]={false};
Q.push(G.s);
while(!Q.empty())
{
i=Q.front();Q.pop();
if(!f[i])
{
AN *p=G.vex[i].first;
while(p)
{
S.push(p->adj);
p=p->next;
}
//利用栈纠正临接点顺序
while(!S.empty())
{
Q.push(S.top());S.pop();
}
if(i==G.s)
printf("%d",i);
else
printf(" %d",i);
f[i]=true;
}
}
printf("\n");
} int main()
{
int t;
scanf("%d",&t);
while(t--)
{
ALG G;
scanf("%d %d %d",&G.vexn,&G.arcn,&G.s);
creat(G);
BFS(G);
}
return ;
} /***************************************************
User name: ***
Result: Accepted
Take time: 0ms
Take Memory: 156KB
Submit time: 2016-11-18 19:51:04
****************************************************/
SDUT 2142 数据结构实验之图论二:基于邻接表的广度优先搜索遍历的更多相关文章
- SDUT2142数据结构实验之图论二:基于邻接表的广度优先搜索遍历
http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2142&cid=1186 题目描述 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜 ...
- 基于邻接表的广度优先搜索遍历(bfs)
题目:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2142&cid=1186 #include<stdio.h> #incl ...
- SDUT OJ 数据结构实验之排序二:交换排序
数据结构实验之排序二:交换排序 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...
- SDUT 3399 数据结构实验之排序二:交换排序
数据结构实验之排序二:交换排序 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 冒泡排序和快 ...
- SDUT 3363 数据结构实验之图论七:驴友计划
数据结构实验之图论七:驴友计划 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 做为一个资深 ...
- SDUT 3362 数据结构实验之图论六:村村通公路
数据结构实验之图论六:村村通公路 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 当前农村公 ...
- SDUT OJ 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
数据结构实验之图论十:判断给定图是否存在合法拓扑序列 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Prob ...
- SDUT OJ 数据结构实验之图论八:欧拉回路
数据结构实验之图论八:欧拉回路 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...
- SDUT OJ 数据结构实验之图论六:村村通公路(最小生成树)
数据结构实验之图论六:村村通公路 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descri ...
随机推荐
- HQ的测试流程
测试流程如下图:
- LeetCode Continuous Subarray Sum
原题链接在这里:https://leetcode.com/problems/continuous-subarray-sum/description/ 题目: Given a list of non-n ...
- QtCreator开启-O编译优化的方式
首先,编译优化必须是在Release模式下进行,保证程序没有任何bug的条件下进行执行.编译优化能极大提升程序的运行效率,级别越高速度越快,但是对代码健壮性要求也越高! 选择编译release模式,在 ...
- GWT异步更改cellTable中cell的数据显示
项目中遇到一个棘手的问题,使用GWT的cellTable的时候,要更改一个单元格的显示问题.如果仅仅是一个单独的cell 可能会有比较好的处理办法,比如可以找到这一列,然后更新整个cellTable, ...
- Java并发 两个线程交替执行和死锁
今天看到一个题:两个线程交替打印奇数和偶数,即一个线程打印奇数,另一个打印偶数,交替打印从1到100.想了下有多重实现方法. wait和notify方法: public class OddEven { ...
- L2-022. 重排链表
L2-022. 重排链表 时间限制 500 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个单链表 L1→L2→...→Ln-1→Ln,请 ...
- HTTP-Runoob:HTTP请求头信息
ylbtech-HTTP-Runoob:HTTP请求头信息 1.返回顶部 1. HTTP 响应头信息 HTTP请求头提供了关于请求,响应或者其他的发送实体的信息. 在本章节中我们将具体来介绍HTTP响 ...
- Oracle 静默安装的db_install.rsp 文件
Oracle 静默安装的db_install.rsp 文件,已修改好值 ################################################################ ...
- 五颜六色的记事本 Notepad2.cn
这是一款五颜六色的记事本,支持同时五种颜色的标签录入,可随意切换. 考虑到使用者的用眼舒适度,特意采用颜色对比明显并且色调柔和的配色方案,选择通用的微软雅黑字体作为编辑字体,字体工整便于识别. 针对使 ...
- 11-23网页基础--JavaScript基础知识
第一课 JavaScript简介 一.定义:JavaScript是脚本语言,需要宿主文件,它的宿主文件是html文件. JavaScript 是一种轻量级的编程语言. JavaScript 是可插入 ...