数据结构之 图论---bfs(邻接表)
数据结构实验之图论二:基于邻接表的广度优先搜索遍历
Time Limit: 1000MS Memory limit: 65536K
题目描述
输入
对于每组数据,第一行是三个整数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 代码:
#include <iostream>
#include <string>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue>; using namespace std; struct node
{
int data;
int next;
}a[6000]; int cnt;
int head[101];
void Insert_edge(int u, int v)
{
a[cnt].data=u;
a[cnt].next=head[v];
head[v]=cnt++;
} int list[101],e;
void bfs(int n, int s) //n个点, s是起点
{
queue<int>q;
bool vis[101];
memset(vis, false, sizeof(vis));
q.push(s);
vis[s]=true;
int i, dd; //当前队首元素
int ff; while(!q.empty())
{
dd=q.front();
q.pop();
list[e++]=dd;
int w[101], p=0;
//queue<int>p;
for(i=head[dd]; i!=-1; i=a[i].next )
{
ff=a[i].data;
if(vis[ff]==false)
{
//p.push(ff);
w[p++]=ff;
vis[ff]=true;
}
}
sort(w, w+p); //排序 为了保证大小顺序
for(i=0; i<p; i++)
{
q.push(w[i]); //遍历结果加入队列
}
}
while(!q.empty())
{
ff=q.front();
q.pop();
list[e++]=ff;
}
} int main()
{
int t;
cin>>t;
int i, j;
int n, m, u, v;
int start; while(t--)
{
cin>>n>>m>>start;
cnt=0;
memset(head, -1, sizeof(head));
for(i=0; i<m; i++)
{
cin>>u>>v;
Insert_edge(u, v);
Insert_edge(v, u); //无向图插入边
}
bfs(n, start);
for(i=0; i<e; i++)
{
if(i==0)
cout<<list[i];
else
cout<<" "<<list[i];
}
cout<<endl;
}
return 0;
}
数据结构之 图论---bfs(邻接表)的更多相关文章
- 《数据结构》C++代码 邻接表与邻接矩阵
上一篇“BFS与DFS”写完,突然意识到这个可能偏离了“数据结构”的主题,所以回来介绍一下图的存储:邻接表和邻接矩阵. 存图有两种方式,邻接矩阵严格说就是一个bool型的二维数组,map[i][j]表 ...
- bfs 邻接表(需要优化 可能会RE *【模板】)
//---基于邻接表的bfs #include <stdio.h> #include <string.h> #include <iostream> #include ...
- I - 乓 (BFS+邻接表)
USTC campus network is a huge network. There is a bi-directional link between every pair of computer ...
- 从0开始 图论学习 邻接表 STL vector
邻接表表示 用vector实现 writer:pprp 代码如下: #include <bits/stdc++.h> using namespace std; const int maxn ...
- c_数据结构_图_邻接表
课程设计------邻接表 图的遍历实现课程设计:https://files.cnblogs.com/files/Vera-y/图的遍历_课程设计.zip #include<stdio.h> ...
- bfs 邻接表
#include<stdio.h> #include<stdlib.h> #include<string.h> struct node { int date; st ...
- SDUT 2142 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
数据结构实验之图论二:基于邻接表的广度优先搜索遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Descript ...
- ACM/ICPC 之 数据结构-邻接表+BFS(TSH OJ-无线广播Broadcast)
这道题中若能够构成互不干扰的区域,其构成的图其实就是汉密尔顿路(Hamilton road),因此如果能够观察出来可以直接转化为汉密尔顿路的存在性证明,即便不能观察,我相信ACMer也能转化为BFS问 ...
- 数据结构 《2》----基于邻接表表示的图的实现 DFS(递归和非递归), BFS
图通常有两种表示方法: 邻接矩阵 和 邻接表 对于稀疏的图,邻接表表示能够极大地节省空间. 以下是图的数据结构的主要部分: struct Vertex{ ElementType element; // ...
随机推荐
- 洛谷 [P2964] 硬币的游戏
博弈论+dp 依旧是博弈论的壳子,但问的是最大值,所以要dp 设 dp[i][j] 表示该取 i 号硬币,上一次取了 j 个的先手能取的最大值, 因为每次从小到大枚举复杂度太高,所以我们要从 dp[i ...
- 聊天程序(基于Socket、Thread)
聊天程序简述 1.目的:主要是为了阐述Socket,以及应用多线程,本文侧重Socket相关网路编程的阐述.如果您对多线程不了解,大家可以看下我的上一篇博文浅解多线程 . 2.功能:此聊天程序功能实现 ...
- jsp、Html页面注释的种类
<!-- 这里面的注释在查看页面源代码时,依旧可以看到,另外页面加载时这里面注释的内容仍旧会编译 --> <%-- JSP中的注释,这里面的内容在查看页面源代码时,看不到这里面注释书 ...
- Scrapy学习-8-ItemLoader
ItemLoader使用 作用 方便管理维护重用xpath或css规则 实例 itemloader+图片处理 # items.py import scrapy from scrapy.loader ...
- Android 之 下拉框(Spinner)的使用-转
下拉列表 Spinner. Spinner的使用,可以极大提高用户的体验性.当需要用户选择的时候,可以提供一个下拉列表将所有可选的项列出来.供用户选择. Demo如下,可以留作参考 一.使用数组作为数 ...
- LeetCode OJ--Partition List
http://oj.leetcode.com/problems/partition-list/ 链表的处理 #include <iostream> using namespace std; ...
- web信息搜索之目标扫描篇
https://blog.csdn.net/dongfei2033/article/details/78175421
- CODEVS 1245 最小的N个和 堆+排序
原题链接 http://codevs.cn/problem/1245/ 题目描述 Description 有两个长度为 N 的序列 A 和 B,在 A 和 B 中各任取一个数可以得到 N^2 个和,求 ...
- css可见性
overflow:hidden: 溢出隐藏 visibility:hidden: 隐藏元素,隐藏之后还占据原来的位置 display:none: 隐藏元 ...
- jfinal使用idea启动 访问报404 action not found
公司一个项目,在eclipse里面启动正常,换到idea里面启动后,启动没有报错,但是访问的时候会提示404 action not found. 百度了很多种解决方法 都没有解决. 今天脑子一转,想到 ...