http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2141&cid=1186
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<queue>
using namespace std ;
int map[][] ;
int vis[] ;
int ans[] ;
int i,j ,u,v;
int dingdian,n,bian ,h;
int mark=;
queue<int>q ;
void bfs(int h)
{
memset(ans,,sizeof(ans)) ;
memset(vis,,sizeof(vis)) ;
q.push(h) ;
vis[h] = ;
while(!q.empty())
{
int t = q.front() ;
q.pop() ;
if(mark)
{
printf("%d",t);
mark=;
}
else printf(" %d",t);
for(i = ; i < dingdian ; i++)
{
if(!vis[i]&&map[t][i])
{
q.push(i) ;
vis[i] = ;
}
}
}
}
int main()
{
cin>>n ;
queue<int>q ;
memset(map,,sizeof(map)) ;
for(i = ; i <= n ; i++)
{
scanf("%d%d%d",&dingdian,&bian,&h) ;
int j ;
for(j = ; j <bian ; j++)
{
scanf("%d%d",&u,&v) ; map[u][v] = map[v][u] = ;
}
bfs(h) ;
cout<<endl ;
}
return ;
}