1. 程式人生 > >2107 資料結構實驗之圖論二:圖的深度遍歷

2107 資料結構實驗之圖論二:圖的深度遍歷

#include <iostream>  
#include <cstdlib>  
#include <cstring>  
int sum;
using namespace std;  

int vis[100];  
int dis[100];  
int map[100][100];  
int k;  

void DFS(int t)  
{  

    vis[t] = 1;                     // 標記已被訪問過  
    dis[sum++]=t;
    for(int j=0; j<k; j++)          // 尋找鄰接點  
{ if(!vis[j] && map[t][j]==1) // 此頂點沒被訪問過且兩點有邊相連線 DFS(j); } } int main() { int m,t; int u,v; int i,j; cin>>t; while(t--) { cin>>k>>m; sum=0; memset(vis,0,sizeof(vis)); memset
(map, 0, sizeof(map)); memset(dis, 0, sizeof(dis)); for (i=0; i<m; i++) { cin>>u>>v; map[u][v] = map[v][u] = 1; } for(i=0; i<k; i++) // K 個頂點 編號為0~k-1 { if(!vis[i]) // 如果此頂點沒被訪問過,則進行DFS深搜
DFS(i); } for(i=0;i<k-1;i++) cout<<dis[i]<<" "; cout<<dis[i]<<endl; } return 0; }