SDUT 2017 图的深度遍历

 题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2107

 裸DFS。

 1 #include <stdio.h>
 2 #include <string.h>
 3 int p[101][101],o[101],num[101],z;
 4 void dfs(int k,int v)
 5 {
 6     int i;
 7     o[v] = 1;
 8     num[z] = v;
 9     z ++;
10     for(i = 0;i <= k-1;i ++)
11     {
12         if(p[v][i] == 1 && o[i] == 0)
13         {
14             dfs(k,i);
15         }
16     }
17 }
18 int main()
19 {
20     int n,k,m,u,v,i,j,t;
21     scanf("%d",&n);
22     while(n--)
23     {
24         memset(p,0,sizeof(p));
25         memset(o,0,sizeof(o));
26         memset(num,0,sizeof(num));
27         scanf("%d%d",&k,&m);
28         z = 0;
29         t = 0;
30         for(i = 1;i <= m;i ++)
31         {
32             scanf("%d%d",&u,&v);
33             p[v][u] = 1;
34             p[u][v] = 1;
35         }
36         for(i = 0;i <= k-1;i ++)
37         {
38             for(j = 0;j <= k-1;j ++)
39             {
40                 if(p[i][j] == 1)
41                 {
42                     dfs(k,i);
43                     t = 1;
44                     break;
45                 }
46             }
47             if(t) break;
48         }
49         for(i = 0;i <= z-1;i ++)
50         {
51             if(i != z-1)
52             printf("%d ",num[i]);
53             else
54             printf("%d\n",num[i]);
55         }
56     }
57 }

 

posted @ 2012-05-29 15:51  Naix_x  阅读(195)  评论(0编辑  收藏  举报