SDUT2142数据结构实验之图论二:基于邻接表的广度优先搜索遍历
http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2142&cid=1186
题目描述
输入
对于每组数据,第一行是三个整数k,m,t(0<k<100,0<m<(k-1)*k/2,0< t<k),表示有m条边,k个顶点,t为遍历的起始顶点。
下面的m行,每行是空格隔开的两个整数u,v,表示一条连接u,v顶点的无向边。
输出
示例输入
1
6 7 0
0 3
0 4
1 4
1 5
2 3
2 4
3 5
示例输出
0 3 4 2 5 1
主要难点是用邻接表去存,相比于邻接矩阵这个要稍麻烦一点,原则上有两种做法,先介绍用queue和vector的那种做法。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
#include<vector>
using namespace std;
priority_queue<int ,vector<int >,greater<int> >sort[];
//sort数组是凡是与sort的下标相连的点组成的队列,且为优先队列
queue<int>q;//建立q普通队列
int u,v;
int mark;//控制输出
int vis[];//标记数组
void BFS(int kk)
{
q.push(kk);// 是首元素,直接加入队列
vis[kk]=;
while(!q.empty())//判断是否为空
{
int s=q.front();//取队列首元素
q.pop();//删除队列头元素,就是下面直接输出
if(mark)//控制输出空格
{
cout<<s;
mark=;
}
else
printf(" %d",s);
while(!sort[s].empty())//判断这个相关联队列是否为空
{
int ss=sort[s].top();//取它的队列首元素
if(!vis[ss])//如果没被标记
{
q.push(ss);//就加入q队列中
vis[ss]=;
}
sort[s].pop();//直接删除掉这个队列首元素
}
}
} int main()
{
//memset(map,0,sizeof(map)); while(!q.empty())//将队列清空
q.pop();
int n;
cin>>n;
for(int i=; i<=n; i++)
{
memset(vis,,sizeof(vis));
int k,m,t;
cin>>k>>m>>t;
for(int k=; k<=m; k++)//将队列清空
{
while(!sort[k].empty())
{
sort[k].pop();
}
}
for(int j=; j<=m; j++)
{
cin>>u>>v;
sort[u].push(v);//因为是用邻接表在存储,所以用这种形式表示与u有关联的点存在sort这个队列中
sort[v].push(u);
} mark=;
BFS(t);
printf("\n");
}
return ;
}
SDUT2142数据结构实验之图论二:基于邻接表的广度优先搜索遍历的更多相关文章
- SDUT 2142 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
数据结构实验之图论二:基于邻接表的广度优先搜索遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Descript ...
- 基于邻接表的广度优先搜索遍历(bfs)
题目:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2142&cid=1186 #include<stdio.h> #incl ...
- 数据结构实验之图论二:图的深度遍历(SDUT 2107)(简单DFS)
题解:图的深度遍历就是顺着一个最初的结点开始,把与它相邻的结点都找到,也就是一直往下搜索直到尽头,然后在顺次找其他的结点. #include <bits/stdc++.h> using n ...
- 数据结构之 图论---bfs(邻接表)
数据结构实验之图论二:基于邻接表的广度优先搜索遍历 Time Limit: 1000MS Memory limit: 65536K 题目描述 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索( ...
- SDUT 2141 【TEST】数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem ...
- SDUT 3363 数据结构实验之图论七:驴友计划
数据结构实验之图论七:驴友计划 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 做为一个资深 ...
- 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 3362 数据结构实验之图论六:村村通公路
数据结构实验之图论六:村村通公路 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 当前农村公 ...
随机推荐
- 【风马一族_Python】 决策树
<机器学习实战>第三章 决策树 ------------------------------------- #1 trees.py 计算给定数据集的香农熵 ---------------- ...
- win7 php5.5 apache 源码安装 imagick扩展
最近公司项目有用到php 的imagick,折腾了好长时间才把扩展装上,最主要的就是最新的不一定是最合适的,最开始一直找最新包安装,一直都不成功,经过google了好长时间,终于找到一个有用的,灵机一 ...
- 获取iOS设备信息的编程接口
参考资料: [1] 博客园,iOS屏幕尺寸和分辨率了解 [2] 张兴业,获取手机信息(UIDevice.NSBundle.NSLocale), CSDN
- MATLAB light material lighting
clf;[X,Y,Z]=sphere(40);colormap(jet)subplot(1,2,1),surf(X,Y,Z),axis off square,shading interplight(' ...
- 转:java中volatile关键字的含义
转:java中volatile关键字的含义 在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言 ...
- 【原】使用ajax的get异常获取数据的时候,IE浏览器总是有缓存
//HTML里有下面这样一段代码 //异步获取准备人信息 $.get("PrepSetpNew/PrepareMainCrew.ashx?Method=GetPrepUserInfo&quo ...
- fis3简单教程
#进入工作目录初始化fis3目录(此步非必须,如果当前目录已有fis-conf.js文件,可以不用初始化)fis3 init#部署(<path>为部署目录,如果想部署到当前output目录 ...
- Linux&UNIX上卸载GoldenGate的方法
1. Log on to the database server (as oracle) where the GoldenGate software is installed. [root@oracl ...
- 图解 CSS: 理解样式表的逻辑(转载)
原文:http://www.cnblogs.com/del/archive/2009/02/01/1382141.html 样式表可以是外部的.内联的或嵌入的; 链接外部样式文件一般是:<lin ...
- selenium+python find_element_by_css_selector方法使用
1.通过类class获取 比如如下代码 <h1 class="important"> This heading is very important. </h1&g ...