This program hangs when I enter the number of vertices only..It does nothing..I am not able to figure out what's wrong with this.Please help

#include <list>

using namespace std;

// This class represents a directed graph using adjacency list representation
class Graph
    int V;    // No. of vertices
    list<int> *adj;    // Pointer to an array containing adjacency lists
    Graph(int V);  // Constructor
    void addEdge(int v, int w); // function to add an edge to graph
    void BFS(int s);  // prints BFS traversal from a given source s

Graph::Graph(int V)
    this->V = V;
    adj = new list<int>[V];

void Graph::addEdge(int v, int w)
    adj[v].push_back(w); // Add w to v’s list.

void Graph::BFS(int s)
    // Mark all the vertices as not visited
    bool *visited = new bool[V];
    for(int i = 0; i < V; i++)
        visited[i] = false;

    // Create a queue for BFS
    list<int> queue;

    // Mark the current node as visited and enqueue it
    visited[s] = true;

    // 'i' will be used to get all adjacent vertices of a vertex
    list<int>::iterator i;

        // Dequeue a vertex from queue and print it
        s = queue.front();
        cout << s << " ";

        // Get all adjacent vertices of the dequeued vertex s
        // If a adjacent has not been visited, then mark it visited
        // and enqueue it
        for(i = adj[s].begin(); i != adj[s].end(); ++i)
                visited[*i] = true;

// Driver program to test methods of graph class
int main()
    // Create a graph given in the above diagram
    int n,n1,n2,s;
    printf("Enter Number of vertices\n");
    Graph g(n);
    for(int i=0;i<n;i++)
    cout << "Following is Breadth First Traversal (starting from vertex given by you) \n";

 return 0;

In your code here in main():

for(int i=0;i<n;i++)

Neither n1 nor n2 are initialized - they just contain garbage data from the stack.

This article has been dead for over six months. Start a new discussion instead.