首页 > 代码库 > bfs 邻接表
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 邻接表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。