└── Breadth First Search (CPP) /Breadth First Search (CPP): -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | struct Edge{ 4 | int src,dest; 5 | }; 6 | class Graph 7 | { 8 | public: 9 | vector> adjList; 10 | Graph(vector const &edges,int n) 11 | { 12 | adjList.resize(n); 13 | for(auto &edge:edges) 14 | { 15 | adjList[edge.src].push_back(edge.dest); 16 | adjList[edge.dest].push_back(edge.src); 17 | } 18 | } 19 | }; 20 | void BFS(Graph const &graph,int v,vector &discovered) 21 | { 22 | queue q; 23 | discovered[v]=true; 24 | q.push(v); 25 | while(!q.empty()) 26 | { 27 | v=q.front(); 28 | q.pop(); 29 | cout<< v<< " "; 30 | for(int u:graph.adjList[v]) 31 | { 32 | if(!discovered[u]) 33 | { 34 | discovered[u]=true; 35 | q.push(u); 36 | } 37 | } 38 | } 39 | } 40 | int main() 41 | { 42 | vector edges={ 43 | {1,2},{1,3},{1,4},{2,5},{2,6},{5,9},{5,10},{4,7},{4,8},{7,11},{7,12} 44 | }; 45 | int n=15; 46 | Graph graph(edges,n); 47 | vector discovered(n,false); 48 | for(int i=0;i