演示

代码
#include <iostream>
#include <stdio.h>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int e[50][50];
bool visit[50];
int nodeNum, roadNum;
void dfs(int n){
printf("%d ",n);
visit[n] = true;
for(int i = 0; i < nodeNum; i++){
if(visit[i] == false && e[n][i] == 1){
dfs(i);
}
}
}
void bfs(int n){
visit[n] = true;
queue<int> q;
q.push(n);
while(q.empty() == false){
int node = q.front();
q.pop();
printf("%d ", node);
for(int i = 0; i < nodeNum; i++){
if(visit[i] == false && e[node][i] == 1){
visit[i] = true;
q.push(i);
}
}
}
}
int main(){
printf("请输入结点个数:");
cin >> nodeNum;
printf("\n请输入路径条数:");
cin >> roadNum;
printf("\n请输入路径:\n");
for(int i = 0; i < roadNum; i++){
int n1, n2;
cin >> n1 >> n2;
e[n1][n2] = 1;
e[n2][n1] = 1;
}
printf("\n图的深搜:\n");
for(int i = 0; i < nodeNum; i++){
if(visit[i] == false){
printf("{ ");
dfs(i);
printf("}\n");
}
}
printf("\n图的广搜:\n");
for(int i = 0; i < nodeNum; i++)
visit[i] = false;
for(int i = 0; i < nodeNum; i++){
if(visit[i] == false){
printf("{ ");
bfs(i);
printf("}\n");
}
}
return 0;
}