双向广搜 代码框架

//双向广搜代码框架
struct State { }; //状态
queueque[2];
bool vis[2];
bool flag;
void bfs(int d) {
    int size=que[d].size();
    while(size--) {
        //普通单广转移新状态v
        if(vis[d][v]) continue;
        if(vis[d^1][v]) {
            flag=true;
            return;
        }
        //新状态入队
    }
}
int dbfs() {
    //初始化
    int cnt=0;
    while(true) {
        cnt++;
        if(que[0].size()


双向广搜

 从初始结点和目标结点开始分别作两次BFS,每次选择队列中结点少的一边进行扩展,并且检测两边是否出现了状态重合

你可能感兴趣的:(搜索,框架,模板)