-2
C++에서 DFS를 사용하고 있지만이 코드는 segfault를 제공합니다. gdb를 사용하여 main에서 첫 번째 푸시 한 후 segfaults를 검사했습니다. 내가 놓친 게 뭐야?벡터를 사용하여 dfs 구현시 segfault가 제공됩니다.
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#define MAX_N 5001
using namespace std;
vector< vector<int> > g;
bool visited[MAX_N];
void dfs(int start){
stack<int> s;
s.push(start);
while(!s.empty()){
int current = s.top();
s.pop();
visited[current] = true;
cout<<current<<"\n";
for(int i = 0; i < g[current].size() ; ++i){
if(!visited[g[current][i]]){
s.push(g[current][i]);
visited[g[current][i]] = true;
}
}
}
}
int main() {
g[0].push_back(1);
g[0].push_back(2);
g[2].push_back(3);
g[3].push_back(4);
dfs(0);
return 0;
}
힌트 : 설정하는'0이 아닌 뭔가 g'의 크기? – Dutow
vector의 resize() 함수를 사용하여 g에 크기를 지정하십시오. –
@Dutow 나는 찾을 수 없다. 먼저 내가 벡터를 벡터의 벡터로 선언하여 인접 목록으로 사용할 수있게하고 elemets에 푸시합니다. – anekix