图的邻接矩阵使用库函数<queue>完成广度遍历c++完整代码
时间: 2023-06-11 09:08:16 浏览: 114
利用邻接矩阵实现图的广度优先遍历
以下是使用邻接矩阵和队列实现的广度优先搜索的完整代码示例:
```c++
#include <iostream>
#include <queue>
using namespace std;
const int MAXN = 100;
int n, m; // n是节点数,m是边数
int g[MAXN][MAXN]; // 邻接矩阵存图
bool visited[MAXN]; // 标记节点是否已经访问
void bfs(int start) {
queue<int> q;
visited[start] = true;
q.push(start);
while (!q.empty()) {
int cur = q.front();
cout << cur << " ";
q.pop();
for (int i = 0; i < n; i++) {
if (g[cur][i] && !visited[i]) {
visited[i] = true;
q.push(i);
}
}
}
}
int main() {
cin >> n >> m;
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
g[u][v] = g[v][u] = 1; // 无向图,所以需要加上这行
}
int start;
cin >> start;
bfs(start);
return 0;
}
```
注意,这里使用了一个 `visited` 数组来标记节点是否已经访问过。在实际应用中,可以使用一个 `set` 或者 `unordered_set` 来代替 `visited` 数组。
阅读全文