基于邻接矩阵的深度优先搜索(DFS)

题目: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 }
原文地址:https://www.cnblogs.com/bfshm/p/3163176.html