题目:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2107&cid=1186
1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 #include<iostream> 5 #include<queue> 6 using namespace std; 7 int map[101][110],vis[101],a[110]; 8 int n,m,k,j; 9 void dfs(int x) 10 { 11 int i; 12 for(i=0; i<k; i++) 13 { 14 if((map[x][i]||map[i][x])&&vis[i]==0) 15 { 16 vis[i]=1; 17 a[++j]=i; 18 dfs(i); 19 } 20 } 21 }; 22 int main() 23 { 24 int t,i,u,v; 25 scanf("%d",&n); 26 while(n--) 27 { 28 memset(map,0,sizeof(map)); 29 memset(vis,0,sizeof(vis)); 30 cin>>k>>m; 31 for(i=0; i<m; i++) 32 { 33 cin>>u>>v; 34 map[u][v]=1; 35 map[v][u]=1; 36 } 37 t=0; j=0; 38 vis[0]=1; 39 dfs(t); 40 a[0]=0; 41 for(i=0; i<=j-1; i++) 42 printf("%d ",a[i]); 43 if(j>=1) 44 printf("%d ",a[i]); 45 } 46 }