#include<stdio.h>
int main()
{
//广度遍历用的是邻接表 和深度遍历用的是邻接矩阵共同就是输入用的都是矩阵的方式输入的
int i,j,a,b,n,m,que[10001],book[101]={
0},e[101][101],cur;
//进行初始化
scanf("%d %d",&n,&m); //n:结点的个数也就是矩阵的行和列 //不是重复的
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i==j) e[i][j]=0;
else
e[i][j]=999999;//9999代表无穷大
}
}
//遍历输入
for(i=1;i<=m;i++)
{
printf("请输入元素\n");
scanf("%d %d",&a,&b);
e[a][b]=1;//因为是无向图所以双向都需要标记
e[b][a]=1;}
//进行遍历
int head,tail;//定义头指针和尾指针
head=1;
tail=1;
que[tail]=1;//队列从顶点1开始
tail++;
book[1]=1;//顶点1进行标记
//bfs算法啦
while(head<tail)
{
cur=que[head];
for(i=1;i<=n;i++)
{
if(e[cur][i]==1&&book[i]==0)
{
que[tail]=i;//队列从顶点1开始
tail++;
book[i]=1;//顶点1进行标记
}
if(tail>n)
break ;
}
head++;
}
for(i=1;i<tail;i++)
printf("%d ",que[i]);
getchar();
getchar();
return 0;
}
bfs广度遍历
猜你喜欢
转载自blog.csdn.net/weixin_46809332/article/details/106023848
今日推荐
周排行