- 締切済み
ダイクストラ法 隣接リスト
ダイクストラ法をC言語で隣接配列で書くことができたんですけど隣接リストでの書き方がわかりません。 まずデータ構造をどのようにすればいいですか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- nora1962
- ベストアンサー率60% (431/717)
回答No.1
http://www.deqnotes.net/acmicpc/dijkstra/ ここの struct Node { // このノードから伸びるエッジの情報 vector<int> edges_to; // 各エッジの接続先のノード番号 vector<int> edges_cost; // 各エッジのコスト // ダイクストラ法のためのデータ bool done; // 確定ノードか否か int cost; // このノードへの現時点で判明している最小コスト }; という構造体の「vector<int>」をintのリスト構造にすればいいのでは?
補足
回答ありがどうございます 隣接行列で dist[8][8] = {{0,1,4,I,I,I,I,I}, /*0~*/ {1,0,2,5,3,I,I,I}, /*1~*/ {4,2,0,4,8,I,I,I}, /*2~*/ {I,5,4,0,5,6,7,I}, /*3~*/ {I,3,8,5,0,3,1,I}, /*4~*/ {I,I,I,6,3,0,2,4}, /*5~*/ {I,I,I,7,1,2,0,3}, /*6~*/ {I,I,I,I,I,4,3,0}}; I = ∞ というデータを入力したいんですけど隣接リストにするにはどうやって入力すればいいのですか? 一つ一つmallocしないとだめですか?