2015-03-05 5 views
1

Я пытаюсь сделать эту глубину первой поисковую работу, но я получаю эту странную ошибку:Глубина Первого поиск Constructor Ошибка

'inputEdges' must be initialized by constructor, not by '{---}'

Я понятия не имею, как это исправить.

/* 
* Adjancency List 
*/ 
#include <iostream> 
#include <cstdlib> 
#include <bits/stdc++.h> 
    using namespace std; 

vector<int> edges[5]; 
    bool visited[5]; 



void dfs(int x) 
{ 
visited[x] = true; 
for(int i=0; i < edges[x].size(); i++) 
    if(!visited[edges[x][i]]) 
     dfs(edges[x][i]); 


} 



/* 
* Main function 
*/ 
    int main() 
{ 


for(int i=0; i < 12; i++) 
    visited[i] = false; 
vector<pair<int, int> > inputEdges{{0, 1}, {0, 3}, {1, 2}, {1, 3}, {2, 4}, {2, 3}, {4, 5}, {5, 6}, {5, 1}, {3, 9}, {8, 7}, {7, 0}, {9, 1}}; 
for(int i=0; i < inputEdges.size(); i++) 
{ 
    edges[inputEdges[i].first].push_back(inputEdges[i].second); 
    edges[inputEdges[i].second].push_back(inputEdges[i].first); 
} 

dfs(0); 
return 0; 
} 
+0

Вы компилируете C++ 11? В любом случае, вы не должны включать ''. – chris

+3

Цикл типа 'for (int i = 0; i <12; i ++)' используется для индексации массива, объявленного только как «bool visited [5];' является рецептом неопределенного поведения. – WhozCraig

+0

@chris [см. Здесь] (http://stackoverflow.com/questions/25311011/how-does-include-bits-stdc-h-work-in-c) –

ответ

1

Список содержимого вектора через список, заключенный в скобки, действителен только в C++ 11 или более поздней версии. Для компиляции этого кода вам нужно будет использовать компилятор, который соответствует C++ 11.

Смежные вопросы