#include <bits/stdc++.h>
using namespace std;
int mmp[1010][1010]; //建立邻接矩阵存储图
int vis[1010]; //储存已遍历的结点
int que[1010]; //确定输出顺序
int n,m,t;
void DFS(int s)
{
que[t++] = s; //正序
vis[s] = 1;
for(int i = 0;i < n;i++)
{
if(!vis[i] && mmp[s][i])
{
DFS(i);
}
}
}
int main()
{
int u,v,x,i;
scanf("%d",&x);
while(x--)
{
t = 0; //来记录节点总数
memset(mmp,0,sizeof(mmp));
memset(vis,0,sizeof(vis));
cin >> n >> m;
for( i = 0;i < m;i++)
{
cin >> u >> v;
mmp[u][v] = mmp[v][u] = 1;
}
DFS(0);
for(i=0;i<t;i++)
{
if(i==t-1)
{
printf("%d",que[i]);
}
else
{
printf("%d ",que[i]);
}
}
printf("\n");
}
return 0;
}
数据结构实验之图论二:图的深度遍历
最新推荐文章于 2022-05-29 14:52:06 发布