题意
求一个图的DFS和BFS。
解题思路
用递归的方式DFS,利用队列来BFS
参考代码
#include <bits/stdc++.h>
using namespace std;
#define N 20
int Map[N][N];
bool used[N];
int n,e;
int flag=0;
void DFS(int x){
printf("%d ",x);
used[x]=true;
for (int i=0;i<n;i++){
if (used[i]) continue;
if (Map[x][i]) DFS(i);
}
}
void BFS(int x){
queue<int> que;
que.push(x);
used[x]=true;
while (!que.empty()){
int x=que.front();
for (int i=0;i<n;i++){
if (used[i]) continue;
if (Map[x][i]){
que.push(i);
used[i]=true;
}
}
printf("%d ",x);
que.pop();
}
}
int main(){
int x,y;
cin>>n>>e;
memset(Map,0,sizeof(Map));
memset(used,false,sizeof(used));
for (int i=0;i<e;i++){
cin>>x>>y;
Map[x][y]=Map[y][x]=1;
}
//DFS
for (int i=0;i<n;i++){
if (used[i]) continue;
printf("{ ");
DFS(i);
printf("}\n");
}
//BFS
memset(used,false,sizeof(used));
for (int i=0;i<n;i++){
if (used[i]) continue;
printf("{ ");
BFS(i);
printf("}\n");
}
return 0;
}