邻接矩阵的深度遍历

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 



 
   
 
  

你可能感兴趣的:(遍历)