-2
DFSをC++で使用するように実装していますが、何とかこのコードでsegfaultが得られます。私はgdbを使って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;
}
ヒント:あなたは、ゼロ以外の何かに 'G'のサイズを設定するのですか? – Dutow
ベクトルのサイズ変更()関数を使用してgにサイズを割り当てます。 –
@Dutow私は見つけることができません。まず、ベクトルをベクトルのベクトルとして宣言し、隣接リストとして使用できるようにしてから、elemetsにプッシュします。 – anekix