BFS 实现 C++
创始人
2024-12-01 02:30:07
0

以下是用C++实现BFS算法的示例代码:

#include 
#include 
#include 

using namespace std;

void bfs(vector>& graph, int start) {
    int numNodes = graph.size();
    vector visited(numNodes, false); // 记录节点是否已访问过
    queue q;

    visited[start] = true; // 标记起始节点为已访问
    q.push(start);

    while (!q.empty()) {
        int node = q.front();
        q.pop();
        cout << node << " "; // 输出当前节点

        // 遍历当前节点的邻接节点
        for (int neighbor : graph[node]) {
            if (!visited[neighbor]) {
                visited[neighbor] = true;
                q.push(neighbor);
            }
        }
    }
}

int main() {
    // 创建图的邻接表表示
    vector> graph = {
        {1, 2},     // 节点0的邻接节点为1和2
        {0, 3, 4},  // 节点1的邻接节点为0, 3和4
        {0, 5},     // 节点2的邻接节点为0和5
        {1},        // 节点3的邻接节点为1
        {1},        // 节点4的邻接节点为1
        {2}         // 节点5的邻接节点为2
    };

    cout << "BFS traversal starting from node 0: ";
    bfs(graph, 0);

    return 0;
}

这段代码实现了一个简单的BFS算法,用于遍历一个无向图。图的邻接关系使用邻接表表示,每个节点都有一个与之相邻的节点列表。BFS算法使用队列来存储待访问的节点,从起始节点开始,依次遍历其邻接节点,并将未访问过的节点加入队列。这样可以保证在遍历完当前节点的所有邻接节点之后,再访问下一个节点。

相关内容

热门资讯

2026版方法!广东雀神祈福真... 2026版方法!广东雀神祈福真的有用吗(辅助)好像是有辅助技巧(有挂工具)1、进入到广东雀神祈福真的...
网友热议!欢聚水鱼神器(辅助)... 网友热议!欢聚水鱼神器(辅助)确实真的是有辅助工具(有挂秘笈)欢聚水鱼神器能透视中分为三种模型:欢聚...
方法辅助挂!欢乐达人葫芦鱼辅助... 方法辅助挂!欢乐达人葫芦鱼辅助(辅助)一贯真的有辅助挂(有挂解密)1)欢乐达人葫芦鱼辅助辅助插件:进...
黑科技辅助挂!上品游戏辅助器(... 黑科技辅助挂!上品游戏辅助器(辅助)都是是真的有辅助插件(有挂教程)1、上品游戏辅助器透视辅助软件激...
来临!宁波同乡游辅助下载(辅助... 来临!宁波同乡游辅助下载(辅助)总是存在有辅助神器(讲解有挂)1、宁波同乡游辅助下载免费辅助多个强度...
教程辅助挂!闲来辅助器免费(辅... 教程辅助挂!闲来辅助器免费(辅助)果然是有辅助器(有挂秘诀)进入游戏-大厅左侧-新手福利-激活码辅助...
攻略辅助挂!微信小程序功夫川麻... 攻略辅助挂!微信小程序功夫川麻小程序辅助(辅助)一贯存在有辅助脚本(有挂技术)1、许多玩家不知道微信...
据悉!情怀国粹麻将开挂(辅助)... 据悉!情怀国粹麻将开挂(辅助)其实是有辅助app(有挂教学)1、让任何用户在无需情怀国粹麻将开挂安装...
出乎意料的是!暗宝破解器(辅助... 出乎意料的是!暗宝破解器(辅助)竟然是有辅助挂(有挂神器)在进入暗宝破解器软件靠谱后,参与本局比赛的...
更值得关注的是!山西扣点点辅助... 更值得关注的是!山西扣点点辅助挂定制交易平台(辅助)果然确实有辅助神器(有挂头条)1)山西扣点点辅助...