广度搜索就是从原点(0)开始,搜0能到达的所有,如1,再搜2能到达的。就是和原点距离为k,2k,3k...nk。源码如下(c++):
#include<iostream>
#include<queue>
using namespace std;
int p[101][101],f[101];
queue<int> que;
int main()
{
int n,k,m,x,y;
int i;
while(scanf("%d",&n)!=EOF)
{
while(n--)
{
memset(p,0,sizeof(p));
memset(f,0,sizeof(f));
scanf("%d%d",&k,&m);
for(i=0;i<k;i++)
{
scanf("%d%d",&x,&y);
p[x][y]=1;
p[y][x]=1;
}
que.push(0);
f[0]=1;
printf("0");
while(!que.empty())
{
x=que.front();
que.pop();
for(i=0;i<k;i++)
{
if(i!=x&&p[x][i]==1&&f[i]==0)
{
que.push(i);
printf(" %d",i);
f[i]=1;
}
}
}
printf("/n");
}
}
return 0;
}