#include<bits/stdc++.h>
using namespace std;
int mmap[110][110];
int vis[110];//用来标记节点是否被访问过
int k,m,t;
int u,v;
void bfs(int n)
{
queue<int>q;
q.push(n);
while(!q.empty())
{
int now = q.front();//用now标记队首元素
q.pop();//弹出队首元素
for(int i=0;i<k;i++)
{
if(!vis[i]&&mmap[now][i]==1)//输出每个与队首节点相邻的节点并标记
{
vis[i] = 1;
q.push(i);
cout<<" "<<i;
}
}
}
}
int main()
{
int n;
cin>>n;
while(n--)
{
memset(vis,0,sizeof(vis));
memset(mmap,0,sizeof(mmap));
cin>>k>>m>>t;
while(m--)
{
cin>>u>>v;
mmap[u][v]=mmap[v][u]=1;
}
cout<<t;
vis[t]=1;
bfs(t);
cout<<endl;
}
return 0;
}
D - 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历
最新推荐文章于 2020-11-18 15:44:59 发布