DFS和BFS
一个典例
点击查看代码
#include <stdio.h>
#include <algorithm>
#define MAXN 100005
int visited[MAXN];
int queue[MAXN];
int graph[MAXN][MAXN];
void bfs(int u, int n) {
int front = 0, rear = 0;
memset(visited, -1, sizeof(visited));
queue[rear++] = u;
visited[u] = 1;
while (front < rear) {
int now = queue[front++];
printf("%d ", now);
for (int i = 1; i <= n; i++) {
if (graph[now][i] && !visited[i]) {
queue[rear++] = i;
visited[i] = 1;
}
}
}
}
void dfs(int u, int n){
visited[u] = 1;
printf("%d ", u);
for (int i = 1; i <= n; i++) {
if (graph[u][i] && !visited[i]) {
dfs(i, n);
}
}
}
int main(){
int n,m,v;
scanf("%d %d %d", &n, &m, &v);
for (int i = 0; i < m; i++) {
int a, b;
scanf("%d %d", &a, &b);
graph[a][b] = 1;
graph[b][a] = 1; // 无向图
}
dfs(v, n);
printf("\n");
bfs(v, n);
printf("\n");
return 0;
}

浙公网安备 33010602011771号