#include<stdio.h>
#include<string.h>
#define N 110
int Graph[N][N];
int vis[N]; //标记结点是否访问
int dis[N]; //保存遍历结果
int sum;
int k, m;
void digui(int x)
{
int i;
vis[x] = 1;
dis[sum++] = x;
for (i = 0; i < k; i++)
{
if (vis[i] == 0 && Graph[x][i] == 1)
digui(i);
}
}
int main()
{
int i;
int n;//数据的组数
scanf("%d",&n);
while (n--)
{
memset(Graph, 0, sizeof(Graph));
memset(vis,0,sizeof(vis));
scanf("%d%d",&k,&m);
sum = 0;
while (m--) //构造邻接矩阵
{
int u, v;
scanf("%d%d", &u, &v);
Graph[u][v] = Graph[v][u] = 1;
}
for (i = 0; i < k; i++)
{
if (vis[i] == 0)
digui(0);
}
for (i = 0; i < sum; i++)
{
if (i == sum - 1)
printf("%d\n", dis[i]);
else
printf("%d ", dis[i]);
}
}
}
数据结构实验之图论二:图的深度遍历
最新推荐文章于 2024-04-17 16:04:58 发布