#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;
}
2107 数据结构实验之图论二:图的深度遍历
原文作者:数据结构之图
原文地址: https://blog.csdn.net/yue_luo_/article/details/53367157
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/yue_luo_/article/details/53367157
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。