题目描述
一个有n个结点的无向连通图,这些结点以编号:1、2、……n进行编号,现给出结点间的连接关系。请以结点1为起点,按广度优先搜索(bfs)、优先访问小编号结点的顺序遍历并输出该图。
输入
第一行为两整数,n和e,表示n个顶点,e条边;(2<=n,e<=10)
以下e行每行两个数,表示两个结点是联通的。
输出
只有一行,为节点按照广度优先、小编号结点优先访问的结果。
样例输入
5 7 1 2 1 3 1 4 2 4 2 5 3 5 4 5
样例输出
1 2 3 4 5
参考代码:
邻接矩阵:
#include
using namespace std;
#define N 15
int n,e,x,y;
int q[15],hh,tt=1;
bool g[N][N];
bool k[N];
void bfs(){
int l,flag=true,t;
while(hh
k[q[hh]]=true;
l=hh;flag=false;
t=q[hh];
printf("%d ",q[hh]);
hh++;
for(int i=1;i<=n;i++)
if(!k[i]&&g[t][i]){
k[i]=true;
q[tt++]=i;
flag=true;
}
}
return;
}
int main(){
scanf("%d%d",&n,&e);
for(int i=0;i
scanf("%d%d",&x,&y);
g[x][y]=1;
g[y][x]=1;
}
q[0]=1;
k[1]=true;
bfs();
return 0;
}