bfs 邻接表
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct node
{
int date;
struct node *next; }*h[1000],*head[1000];
int v[10000],vi[10000];
int i,j;
int t,n,m,k;
void chu(int z)
{
for(i=0;i<z;i++)
{h[i]=(struct node*)malloc(sizeof(struct node));
h[i]->next=NULL;
head[i]=h[i];
} }
void chu1(int z)
{
for(i=0;i<z;i++)
{
head[i]=head[i]->next;
}}
void bfs(int K)
{
int jin=0,chu=0;
chu1(n);
int w;
v[jin++]=K;
vi[K]=2;
printf("%d",K);
while(chu<jin)
{w=v[chu++];
if(chu!=1&&vi[w]==1)
{printf(" %d",w);
vi[w]=2;}
while(head[w]!=NULL)
{
if(vi[head[w]->date]==0)
{
v[jin++]=head[w]->date;vi[head[w]->date]=1;
}
head[w]=head[w]->next;
} }
printf("\n");
}
int main()
{ node *p,*q;
scanf("%d",&t);
for(i=0;i<t;i++)
{
scanf("%d%d%d",&n,&m,&k);
chu(n);
memset(vi,0,sizeof(vi));
for(j=0;j<m;j++)
{
int a,b;
scanf("%d%d",&a,&b);
p=(struct node*)malloc(sizeof(struct node));
p->next=NULL;
p->date=b;
h[a]->next=p;
h[a]=p;
p=(struct node*)malloc(sizeof(struct node));
p->next=NULL;
p->date=a;
h[b]->next=p;
h[b]=p;
}
bfs(k);
}
}
bfs 邻接表的更多相关文章
- 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 ...
- ACM/ICPC 之 数据结构-邻接表+BFS(TSH OJ-无线广播Broadcast)
这道题中若能够构成互不干扰的区域,其构成的图其实就是汉密尔顿路(Hamilton road),因此如果能够观察出来可以直接转化为汉密尔顿路的存在性证明,即便不能观察,我相信ACMer也能转化为BFS问 ...
- 数据结构 《2》----基于邻接表表示的图的实现 DFS(递归和非递归), BFS
图通常有两种表示方法: 邻接矩阵 和 邻接表 对于稀疏的图,邻接表表示能够极大地节省空间. 以下是图的数据结构的主要部分: struct Vertex{ ElementType element; // ...
- 数据结构学习笔记05图 (邻接矩阵 邻接表-->BFS DFS、最短路径)
数据结构之图 图(Graph) 包含 一组顶点:通常用V (Vertex) 表示顶点集合 一组边:通常用E (Edge) 表示边的集合 边是顶点对:(v, w) ∈E ,其中v, w ∈ V 有向边& ...
- 邻接表实现Dijkstra算法以及DFS与BFS算法
//============================================================================ // Name : ListDijkstr ...
- 数据结构(11) -- 邻接表存储图的DFS和BFS
/////////////////////////////////////////////////////////////// //图的邻接表表示法以及DFS和BFS //////////////// ...
- 用邻接表实现DFS和BFS
#include <stdio.h> #include <stdlib.h> #define MAXVERTEX 10 typedef char VertexType; //顶 ...
- 无向图的 DFS 和 BFS实现 (以邻接表存储的图)
#include <iostream> #include <queue> using namespace std; #define MaxVertexNum 10 typede ...
随机推荐
- 【westorm系列之二】配置格式化
1.执行格式化后,给句尾加分号
- 字符串哈希hash
题目描述 如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字.大小写字母,大小写敏感),请求出N个字符串中共有多少个不同的字符串. 友情提醒:如果真的想好好练习哈希的话,请自觉,否则请右转 ...
- Maven使用site-deploy(site:deploy)部署通过site生成的文档(Tomcat-WebDAV)
Maven可以通过site生成项目的帮助文档,并且格式为html,那么可以通过site-deploy把文档部署到远端,部署方式支持HTTP/FTP/SCM/WebDAV等. 更多部署方案,参考:htt ...
- Opengl配置
Opengl配置说明: 本配置文档针对windows64位操作系统,配置vs2008项目工程 1.下载OpenGL的glut类库:http://www.opengl.org/resources/lib ...
- android 长按弹出菜单,复制,粘贴,全选
<!-- 定义基础布局LinearLayout --> <LinearLayout xmlns:android="http://schemas.android.com/ap ...
- Java笔试面试题007
Java笔试面试题007 1.请用正則表達式匹配出QQ号(如果QQ号码为5-10位). 解答: ^ \d{5,10}$ 2.String, StringBuffer StringBuilder的差别. ...
- BUPT复试专题—寻找变化前01序列(2016)
题目描述 给你一个01序列,HDLC协议处理的话,如果出现连续的5个1会补1个0.例如1111110,会变成11111010. 现在给你一个经过HDLC处理后的01序列,你需要找到HDLC处理之前的0 ...
- CSS3绘制灰太狼动画,绝对精彩
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- HDU 1003 Max Sum (动规)
Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- 【转载】C#相等性比较
本文阐述C#中相等性比较,其中主要集中在下面两个方面 ==和!=运算符,什么时候它们可以用于相等性比较,什么时候它们不适用,如果不使用,那么它们的替代方式是什么? 什么时候,需要自定一个类型的相等性比 ...