CodeBlocks中的相同代码输出没有显示,但在ideone中显示为什么?

时间:2017-08-06 20:11:47

标签: codeblocks

查找给定集中存在的每个节点的所有可到达节点     给定无向图和一组顶点,找到给定集中存在的每个顶点的所有可到达节点。

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

class Graph
{
public:
    int V;
    list<int> *adj;
    Graph(int );
    void addEdge(int, int);
    vector<int> BFS(int, int, int []);
};

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

void Graph::addEdge(int u, int v)
{
    adj[u].push_back(v);
    adj[v].push_back(u);
}

vector<int> Graph::BFS(int componentNum, int src,int visited[])
{

    queue<int> queue;

    queue.push(src);
    visited[src] = componentNum;
    vector<int> reachableNodes;

    while(!queue.empty())
    {
        int u = queue.front();
        queue.pop();

        reachableNodes.push_back(u);

        for (auto itr = adj[u].begin();itr != adj[u].end(); itr++)
        {
            if (!visited[*itr])
            {
                visited[*itr] = componentNum;
                queue.push(*itr);
            }
        }
    }
    return reachableNodes;
}

void displayReachableNodes(int n,unordered_map <int, vector<int>> m)
{
    vector<int> temp = m[n];
    for (int i=0; i<temp.size(); i++)
        cout << temp[i] << "  ";

    cout << endl;
}

void findReachableNodes(Graph g, int arr[], int n)
{
    int V = g.V;
    int visited[V+1];
    memset(visited, 0, sizeof(visited));

    unordered_map <int, vector<int> > m;

    int componentNum = 0;


    for (int i = 0 ; i < n ; i++)
    {
        int u = arr[i];

        if (!visited[u])
        {
            componentNum++;
            m[visited[u]] = g.BFS(componentNum, u, visited);
        }

        //cout << "Reachable Nodes from " << u <<" are\n";
        displayReachableNodes(visited[u], m);
    }
}

int main()
{
    int V = 7;
    Graph g(V);
    g.addEdge(1, 2);
    g.addEdge(2, 3);
    g.addEdge(3, 4);
    g.addEdge(3, 1);
    g.addEdge(5, 6);
    g.addEdge(5, 7);

    int arr[] = {2, 4, 5};
    int n = sizeof(arr)/sizeof(arr[0]);

    findReachableNodes(g, arr, n);

    return 0;
}

在ideone中相同的代码输出即将到来并且可见但在代码块中它不可见或未来。为什么会这样?

0 个答案:

没有答案