c_cpp BFS

Posted

tags:

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

#include <iostream>
using namespace std;

class graph {
    int v;
    int **adj;
public:
    graph (int v) {
        this->v= v;
        adj= new int*[v];
        for (int i=0; i<v; i++)
            adj[i]= new int [v];
        for (int i=0; i<v; i++)
            for (int j=0; j<v; j++)
                adj[i][j]= 0;
    }
    void addEdge (int u, int w) {
        adj[u][w]= 1;
    }
    void bfs (int );
};
void graph::bfs(int s) {
    bool visited[v]= {0};
    int q[v], front=0, back=0,x;
    q[back++]= s;
    while (front< back) {
        x= q[front++];
        visited[x]= 1;
        cout<< x << " ";

        for (int j=0; j<v; j++)
            if (adj[x][j]== 1 & !visited[j])
                q[back++]= j;
    }
}
int main() {
    graph g(4);
    g.addEdge(0,1);
    g.addEdge(0,2);
    g.addEdge(1,2);
    g.addEdge(2,0);
    g.addEdge(2,3);
    g.addEdge(3,3);

    g.bfs(2);
}

以上是关于c_cpp BFS的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 图表的BFS

c_cpp bfs.cpp

c_cpp BFS(宽度优先搜索算法)-C ++

c_cpp [tree] [dfs] [bfs]二叉树的最小深度

c_cpp [bfs] [string]字梯。给定两个单词(开头和结尾)和一个字典,从星上找到最短变换序列的长度

我们啥时候应该使用普通 BFS 而不是双向 BFS?