c_cpp 图表-BFS

Posted

tags:

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

#include<bits/stdc++.h>
using namespace std;

// #Graphs #BasicProblem
// https://www.geeksforgeeks.org/breadth-first-search-or-bfs-for-a-graph/
// Given graph is a strongly connected directed graph
// (there is atleast 1 path from each vertex to another vertex)

// Testcase
// 1
// 5
// 4
// 0 1
// 0 2
// 1 3
// 2 4
// 0
// Ans: 0 1 2 3 4
void BFS(vector<vector<int>> AdjL,vector<bool> &visited, int start){
    queue<int> Q;
    Q.push(start);
    visited[start]=true;
    while(!Q.empty()){
        cout<<Q.front()<<" ";
        for(int i=0;i<AdjL[Q.front()].size();i++){
            if(!visited[AdjL[Q.front()][i]]){
                Q.push(AdjL[Q.front()][i]);
                visited[AdjL[Q.front()][i]]=true;
            }
        }
        Q.pop();
    }
}

int main(){
    // freopen("ip.txt","r",stdin);
    int t;
    cin>>t;
    while(t--){
      	int v;
    	cin>>v;
    	vector< vector<int> > AdjL(v);
    	int e;
    	cin>>e;
    	int i=0;
    	while(i<e){
    	    int a,b;
    	    cin>>a>>b;
    	    AdjL[a].push_back(b);
    	    i++;
    	}
    	vector<bool> visited(v,false);
    	int start;
    	// cout<<"Enter starting vertex"<<endl;
    	cin>>start;
    	cout<<"BFS: ";
    	BFS(AdjL,visited,start);
    	cout<<endl;
    return 0;
    }
}

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

c_cpp BFS

c_cpp bfs.cpp

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

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

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

c_cpp 图表-ConnectedComponents