私は無向グラフを読む場所からのテキストファイルを持っています。C++でグラフを読み込み、維持しています
1 2 3
2 1
3 1
の行のすべての最初の要素が頂点に対応し、残りは基本的に頂点のための隣接リストである場合、次のようなフォーマットです。
だから私の二つの質問は次のとおりです。
1)C++でこの情報を読むための最良の方法は何ですか? 次のコードセグメントでは、私はすべての情報を正確に読むことができますが、もちろんそれは私が最終的に達成したいものではありません。私はまともな方法で、異なる行の情報を分離することができるようにしたい。(下図のように、この部分は実際に密接に、私の2番目の質問に関連している)最高のデータ構造であるもの
void inputHandle(ifstream& f, int arr[], string fileName) { f.open(fileName); if (!f) { cout << "Unable to open file"; exit(1); // terminate with error } string temp; int i = 0, numTemp; while(f >> temp){ numTemp= atoi(temp.c_str()); arr[i] = numTemp; cout<<arr[i]; i++; } f.close(); }
2)このグラフを保存するには? 私はミニカットアルゴリズムを実装していますので、各繰り返し(グラフの削除/変更)でグラフを修正します。
ご協力いただきありがとうございます。
私は(かつては)その複雑さによって落胆していましたが、Boost Graph Libraryは[最小カット実装]を提供しています(http://www.boost.org/doc/libs/1_46_1/libs/graph/doc/ stoer_wagner_min_cut.html)。 – eudoxos