广度优先搜索(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)模板的主要内容,如果未能解决你的问题,请参考以下文章