邻接矩阵的深度遍历

sdut 2107  图的深度遍历


 1 #include<stdio.h>
 2 #include<string.h>
 3 int map[110][110], vis[110];
 4 int m, n, flag;
 5 void dfs (int i)
 6 {
 7     int j ;
 8     vis[i] = 1;
 9     if( flag == 1)
10        {
11            printf("%d",i);
12            flag = 0;
13        }
14     else printf(" %d",i);
15     for( j=0; j<n; j++ )
16     {
17         if( !vis[j] && map[i][j] == 1 )
18             dfs(j);
19     }
20 
21 
22 }
23 int main ()
24 {
25     int t, a, b;
26     scanf( "%d" , &t );
27     while( t-- )
28     {
29         memset( vis, 0, sizeof(vis));
30         memset( map, 0, sizeof(map));
31         scanf( "%d %d", &n ,&m);
32         flag = 1;//flag标记是否输出空格。
33         for(int i = 0; i< m; i++)
34         {
35             scanf( "%d %d ",&a, &b);
36             map[a][b] = map[b][a] =1;//无向图。
37         }
38             dfs (0);
39             printf( "\n" );
40 
41     }
42     return 0;
43 





posted on 2013-03-30 21:38  straw_berry  阅读(270)  评论(0编辑  收藏  举报