当图以邻接表存储时:
代码:
#include <iostream>
#include <unordered_map>
#include <vector>
#include <queue>
#include <unordered_set>
using namespace std;
// 定义BFS函数
void bfs(const unordered_map<char, vector<char>>& graph, char start_node) {
unordered_set<char> visited; // 用于记录已经访问过的节点
queue<char> q; // 队列,用于存储待访问的节点
visited.insert(start_node); // 标记起始节点为已访问
q.push(start_node); // 将起始节点放入队列
while (!q.empty()) {
// 从队列中取出当前节点
char current = q.front();
q.pop();
// 输出当前节点
cout << current << " ";
// 遍历当前节点的所有邻居
for (char neighbor : graph.at(current)) {
if (visited.find(neighbor) == visited.end()) {
// 如果邻居节点未访问,则将其加入队列并标记为已访问
visited.insert(neighbor);
q.push(neighbor);
}
}
}
}
int main() {
// 定义一个图,使用邻接表表示
un