首页 > 代码库 > 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 邻接表