#include #include #include using namespace std; class Graph { int V; list* adj; public: Graph(int V) { this->V = V; adj = new list[V]; } void addEdge(int v, int w) { adj[v].push_back(w); } void BFS(int s) { bool* visited = new bool[V]; for (int i = 0; i < V; i++) visited[i] = false; queue queue; visited[s] = true; queue.push(s); while (!queue.empty()) { s = queue.front(); cout << s << " "; queue.pop(); for (auto i = adj[s].begin(); i != adj[s].end(); ++i) { if (!visited[*i]) { visited[*i] = true; queue.push(*i); } } } } }; 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); cout << "Breadth First Traversal (starting from vertex 2): "; g.BFS(2); return 0; }