実現したいこと
以下のグラフ探索プログラムを実行したいです。
ですが、グラフを入力するとエラーが出てしまい行き詰っています...
前提
実行環境:Paiza(無料)➡https://paiza.io/projects/NAlQ-zIh0xGXuneOZ55gOA
実行言語:C++
発生している問題・エラーメッセージ
Segmentation fault (core dumped)
該当のソースコード
C++
1#include <iostream> 2#include <vector> 3#include <algorithm> 4using namespace std; 5using Graph = vector<vector<int>>; 6 7// トポロジカルソートする 8vector<bool> seen; 9vector<int> order; // トポロジカルソート順を表す 10void rec(const Graph &G, int v) { 11 seen[v] = true; 12 for (auto next_v : G[v]) { 13 if (seen[next_v]) continue; // すでに訪問済みなら探索しない 14 rec(G, next_v); 15 } 16 17 // v-out を記録する 18 order.push_back(v); 19} 20 21int main() { 22 int N, M; 23 cin >> N >> M; // 頂点数と枝数 24 Graph G(N); // 頂点数 N のグラフ 25 for (int i = 0; i < M; ++i) { 26 int a, b; 27 cin >> a >> b; 28 G[a].push_back(b); 29 } 30 31 // 探索 32 seen.assign(N, false); // 初期状態では全頂点が未訪問 33 order.clear(); // トポロジカルソート順 34 for (int v = 0; v < N; ++v) { 35 if (seen[v]) continue; // すでに訪問済みなら探索しない 36 rec(G, v); 37 } 38 reverse(order.begin(), order.end()); // 逆順に 39 40 // 出力 41 for (auto v : order) cout << v << " -> "; 42 cout << endl; 43}
入力データ
7 7 0 5 1 3 1 6 3 7 2 7 2 5 6 7
試したこと
- 入力の際の半角に気を付ける
- コメント全外し
補足情報(FW/ツールのバージョンなど)
些細なことでも構いませんので、叱咤激励含めて何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー