深度遍历

  1. #include<stdio.h>  
  2. #include<string.h>  
  3.   
  4. int mark,k,m,map[101][101],vis[101][101],h[105];  
  5.   
  6. void seek(int mb)  
  7. {  
  8.     if(h[mb]) return;  
  9.     else h[mb] = 1;  
  10.     int i,j;  
  11.     if(mark)  
  12.     {  
  13.         printf("%d",mb);  
  14.         mark = 0;  
  15.     }  
  16.     else printf(" %d",mb);  
  17.     for(i = 1;i < k; i++)  
  18.     {  
  19.         if( (map[i][mb] && !vis[i][mb]) || (map[mb][i] && !vis[mb][i]))  
  20.         {  
  21.             vis[i][mb] = vis[mb][i] = 1;  
  22.             seek(i);  
  23.         }  
  24.     }  
  25. }  
  26. int main()  
  27. {  
  28.     int js,u,v,i;  
  29.     scanf("%d",&js);  
  30.     while(js--)  
  31.     {  
  32.         memset(map,0,sizeof(map));  
  33.         memset(vis,0,sizeof(vis));  
  34.         memset(h,0,sizeof(h));  
  35.         mark = 1;  
  36.         scanf("%d %d",&k,&m);  
  37.         for(i = 0;i < m; i++)  
  38.         {  
  39.             scanf("%d %d",&u,&v);  
  40.             if(u > v) map[u][v] = 1;  
  41.             else map[v][u] = 1;  
  42.         }  
  43.         for(i = 0;i < k; i++)  
  44.         {  
  45.             if(!h[i])  
  46.             {  
  47.                 seek(i);  
  48.             }  
  49.         }  
  50.         printf("\n");  
  51.     }  
  52.     return 0;  
  53. }  
posted @ 2013-02-26 19:42  好小孩  阅读(167)  评论(0编辑  收藏  举报