有向图BFS遍历邻接矩阵代码C++示例
时间: 2024-12-26 14:04:36 浏览: 2
在C++中,使用邻接矩阵表示有向图并进行广度优先搜索(BFS)的遍历,可以按照以下步骤编写:
```cpp
#include <iostream>
#include <queue>
#include <vector>
// 定义邻接矩阵数据结构
using namespace std;
const int MAXN = 100; // 图的最大节点数
vector<vector<int>> adjMatrix(MAXN); // 矩阵,adj[i][j]表示从i到j的边
void bfs(int start) {
vector<bool> visited[MAXN]; // 记录每个节点是否已访问
queue<int> q; // 使用队列存储待访问的节点
// 初始化:起点入队,标记为未访问
visited[start] = true;
q.push(start);
while (!q.empty()) {
int curr = q.front(); // 取出当前节点
cout << curr << " "; // 打印节点
q.pop();
// 遍历邻居,如果未访问则加入队列
for (int i = 0; i < adjMatrix[curr].size(); i++) {
int neighbor = adjMatrix[curr][i];
if (!visited[neighbor]) {
visited[neighbor] = true;
q.push(neighbor);
}
}
}
}
int main() {
// 具体的邻接矩阵初始化... (这里假设你已经有了一个完整的邻接矩阵)
// 开始BFS
bfs(0); // 从节点0开始遍历
return 0;
}
```
在这个例子中,`bfs`函数接收一个起始节点,并通过邻接矩阵`adjMatrix`来进行遍历。注意,你需要预先定义好邻接矩阵,通常它是一个二维数组,其中`adjMatrix[i][j] = 1`表示存在从节点i到节点j的边。
阅读全文