1 #include <stdio.h>
2 #include <string.h>
3 int map[100][100];
4 int visit[100];
5 int k,n;//k在这里定义防止在DFS函数中再次定义使代码繁琐。
6 void DFS(int t)//DFS函数(深度优先搜索)。
7 {
8 int i;//t表示此时我们处于哪个“点”。
9 visit[t]=1;//将数组中的值变为1,表示已经搜索过。
10 for(i=0;i<k;i++)//从0开始即先遍历节点编号小的。
11 {
12 if(map[t][i]==1&&visit[i]==0)//当此点可以通过并没有搜索过时,输出此点。
13 {
14 printf(" %d",i);
15 DFS(i);//递归。
16 }
17 }
18 }
19 int main()
20 {
21 int T,i;
22 int a,b;
23 scanf("%d",&T);
24 while(T--)
25 {
26 memset(map,0,sizeof(map));
27 memset(visit,0,sizeof(visit));//将两个数组中的数据全部初始化为0。
28 scanf("%d %d",&k,&n);
29 for(i=0;i<n;i++)
30 {
31 scanf("%d %d",&a,&b);//a,b两个暂时储存数据。
32 map[a][b]=map[b][a]=1;//因为是无向边,路径为双向,并在二维数组中将两点的值变为1,表示可以通过。
33 }
34 printf("0");//0作为起始点,直接输出,在DFS函数中从0开始搜索。
35 DFS(0);
36 printf("\n");
37 }
38 return 0;
39 }