广度搜索模板

2020-03-04  本文已影响0人  km15
void bfs(int s) {
    queue<int> q;
    q.push(s);
    while (!q.empty()) {
        取出队首元素top
        访问队首元素top
        将队首元素出队pop
        将top的下一层节点中未曾入队的节点全部入队,并设置为已入队
    }
}

注意:
1、inq数组的含义只能是访问否,而不是是否入队,区别在于:有可能在队列中,但是还没出队,这样会造成重复入队
2、STL的queue,元素入队的push操作还真是知道了该元素的一个副本入队,,因为对原元素的修改不会影响队列的副本,队列的修改也不会影响原元素
->所以如果需要修改,最好存放编号而不是元素本身

上一篇 下一篇

猜你喜欢

热点阅读