2107 資料結構實驗之圖論二:圖的深度遍歷
阿新 • • 發佈:2019-01-08
#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;
}