广度优先搜索(BFS)模板

Posted CSU迦叶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了广度优先搜索(BFS)模板相关的知识,希望对你有一定的参考价值。

伪代码

void BFS(int S){
    queue<int> q;
    q.push(s);
    while(!q.empty()){
        取出队首元素top;
        访问队首元素top;
        将队首元素出队;
        将top的下一层结点中未曾入队的结点全部入队,并设置为已入队;
    }
}

说明

1. 定义队列q,并将起点s入队

2. 写一个while循环,循环条件是队列q非空

3. 在while循环中,先取出队首元素top,然后访问它(访问可以是任何事情,例如将其输出)。访问完后将其出队。

4. 将top的下一层结点中所有未曾入队的结点入队,并标记它们的层号为now的层号加1,同时设置这些入队的结点已入过队。

5. 返回2继续循环

BFS体现在哪

1. 采用的是队列,具有先进先出的特点

2. 当队首元素被访问、出队后,立即入队的是它的下一层元素

出处:胡凡 曾磊《算法笔记》

以上是关于广度优先搜索(BFS)模板的主要内容,如果未能解决你的问题,请参考以下文章

快速排序模板秦九昭算法模板深度优先搜索DFS广度优先搜索BFS图的遍历逆元中国剩余定理斯特林公式

深度优先dfs与广度bfs优先搜索总结+例题

广度优先搜索(BFS)

BFS(广度优先搜索)邻接矩阵C ++

广度优先搜索(BFS)的一个(重要!)细节。

DFS-深度优先搜索与BFS-广度优先搜索