图的广度遍历-邻接链表表示
来源:互联网 发布:恋夜秀场破解软件酷安 编辑:程序博客网 时间:2024/06/01 15:49
#include<stdio.h>#include<malloc.h>#define N 1005typedef struct Link{int data;struct Link * next;struct Link * fir;}Link;Link Pic[N];int front=0;int rear=0;int Check[N];int Queue[N];void BFS(Link a[],int fir){if(front<=rear){Link * p= a[fir].next;while(p!=NULL){if(!Check[p->data]){ Queue[rear++]=p->data; Check[p->data]=1;}p=p->next;}BFS(a,Queue[front++]);}}void Init(int n){for(int i=0;i<n;i++){Pic[i].data=i;Pic[i].next=NULL;Pic[i].fir=&Pic[i];}}void CreatePic(Link a[],int n){int u,v;for(int i=0;i<n;i++){ scanf("%d %d",&u,&v); Link * p=(Link * )malloc(sizeof(Link)); p->data=v; p->next=NULL; Pic[u].fir->next=p; Pic[u].fir=p; Link * q=(Link * )malloc(sizeof(Link)); q->data=u; q->next=NULL; Pic[v].fir->next=q; Pic[v].fir=q;}}void RollBack(int n){front=0;rear=0;for(int i=0;i<n;i++){Check[i]=0;Queue[i]=-1;Pic[i].next=NULL;Pic[i].fir=&Pic[i];}}int main(){int n;int k,m,t;scanf("%d",&n);scanf("%d %d %d",&k,&m,&t);while(n--){Init(k);CreatePic(Pic,m);Check[t]=1; Queue[rear++]=t;BFS(Pic,t);for(int i=0;i<rear;i++){i!=rear-1?printf("%d ",Queue[i]):printf("%d\n",Queue[i]);}RollBack(k);}return 0;}
阅读全文
0 0
- 图的广度遍历-邻接链表表示
- 图的邻接表表示及遍历
- 图的深度遍历-邻接链表表示
- 【数据结构】邻接表表示法的图的深度广度优先遍历递归和非递归遍历
- 图的邻接表表示、广度优先、深度优先搜索
- 邻接表表示的广度优先搜索
- 图的广度优先搜索和深度优先搜索(邻接链表表示)
- 图的邻接表表示及其DFS遍历
- 图的邻接表表示及其BFS遍历
- 图的邻接表表示法及遍历
- 图的邻接表表示
- 图的邻接表表示
- 图的邻接表表示
- 图的邻接表表示
- 图的邻接表表示
- 图的邻接表表示
- 图的邻接表表示
- 图的邻接表表示
- 批量给pdf添加目录(最完整详细方法)
- LeetCode14. Longest Common Prefix
- [DP]Atcoder CODE FESTIVAL 2017 Final (Parallel) D
- Lambda 表达式
- 串行通信
- 图的广度遍历-邻接链表表示
- jvm学习之jvm基础
- 精通正则表达式:4
- R语言——自定义函数求置信区间
- python学习系列(五)字典
- 初学一周犯错经验总结
- Vim 基本命令总结
- Mvp练习题 电影滑动
- 如何提高写代码的效率?