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