草稿涂满荒唐画,摸鱼容易上课难 • 8个月前
#include<bits/stdc++.h>
using namespace std;
bool d[100][100];
bool vis[100];
int k,m,t;
void bfs(int t){
queue<int> q;
q.push(t);
vis[t]=1;
while(!q.empty()){
int node=q.front();
vis[node]=1; //标记:已走过
cout<<node<<' '; //遍历到,输出
q.pop(); //弹出头
for(int i=0;i<k;i++){
if(d[node][i]==1&&!vis[i]){ //没走过,连通
q.push(i);
vis[i]=1;
}
}
}
}
int main(){
int n;
cin>>n;
while(n--){
cin>>k>>m>>t; //k为点,m为边
for(int i=0;i<m;i++){
int f,e;
cin>>f>>e;
d[f][e]=1;
d[e][f]=1;
}
bfs(t); //先从t开始遍历
for(int i=0;i<k;i++){
if(!vis[i]) bfs(i); //遍历其他块
}
memset(d,0,sizeof d);
memset(vis,0,sizeof vis); //初始化
}
return 0;
}
评论:
请先登录,才能进行评论