#include <bits/stdc++.h>
using namespace std;
int a[105][105], t = 0, b[105], c[105];
void DFS(int k, int n)
{
int i;
c[t++] = k;
b[k] = 1;
for(i = 0; i<n; i++)
{
if(a[k][i] == 1 && b[i]==0)
{
DFS(i, n);
}
}
return;
}
/*void BFS(int k, int n)
{
queue<int>q;
int i;
q.push(k);
b[k] = 1;
while(!q.empty())
{
int s = q.front();
cout<<s<<endl;
for(i = 0; i<n; i++)
{
if(a[s][i] == 1 && b[i] == 0)
{
q.push(i);
b[i] = 1;
}
}
q.pop();
}
}*/
int main()
{
int i, n, m, x, y, T, k, j;
cin>>T;
while(T!=0)
{
cin>>n>>m;
t = 0;
memset(b,0,sizeof(b));
memset(a,0,sizeof(a));
memset(c,0,sizeof(c));
for(i = 0; i<m; i++)
{
cin>>x>>y;
a[x][y] = a[y][x] = 1;
}
for(i = 0; i<n; i++)
{
for( j = 0; j<n; j++)
{
if(a[i][j] == 1)
{
k = i;
break;
}
}
if(j<n) break;
}
DFS(k, n);
for(i = 0; i<n; i++)
{
if(i!=n-1) printf("%d ", c[i]);
else printf("%d\n", c[i]);
}
T--;
}
return 0;
}
图的遍历之DFS,BFS
最新推荐文章于 2024-08-26 13:28:57 发布