c++里面的bfs模板
时间: 2024-06-11 14:09:41 浏览: 61
以下是 C 语言中 BFS 的模板:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
int n; // 图中的节点个数
int visited[MAX]; // 记录节点是否已被访问
int graph[MAX][MAX]; // 存储图的邻接矩阵
// 队列结构体
typedef struct {
int data[MAX];
int front, rear;
} Queue;
// 初始化队列
void initQueue(Queue *q) {
q->front = q->rear = 0;
}
// 判断队列是否为空
int isEmpty(Queue *q) {
return q->front == q->rear;
}
// 入队
void enqueue(Queue *q, int x) {
q->data[q->rear++] = x;
}
// 出队
int dequeue(Queue *q) {
return q->data[q->front++];
}
// BFS遍历
void bfs(int start) {
Queue q;
initQueue(&q);
visited[start] = 1;
printf("%d ", start);
enqueue(&q, start);
while (!isEmpty(&q)) {
int cur = dequeue(&q);
for (int i = 0; i < n; i++) {
if (graph[cur][i] && !visited[i]) {
visited[i] = 1;
printf("%d ", i);
enqueue(&q, i);
}
}
}
}
int main() {
// 读入图的信息
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &graph[i][j]);
}
}
// 从节点0开始进行BFS遍历
bfs(0);
return 0;
}
```
阅读全文