• 締切済み

ダイクストラ法 隣接リスト

ダイクストラ法をC言語で隣接配列で書くことができたんですけど隣接リストでの書き方がわかりません。 まずデータ構造をどのようにすればいいですか?

みんなの回答

  • 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のリスト構造にすればいいのでは?

silver_y
質問者

補足

回答ありがどうございます 隣接行列で 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しないとだめですか?

関連するQ&A

  • ダイクストラ法

    ふと思ったのですが、 最短経路問題を解くときに使用されるダイクストラ法ってありますが。 このダイクストラ法で解けない問題ってありますか?

  • ダイクストラ(dijkstra)法のソース

    現在C言語初めて1週間です。 ダイクストラ法について調べています。 WEB検索をかけると沢山ヒットするのですが、 ソースがわかりにくいのが多くて困っています。 アルゴリズムからわかりやすく紹介されているサイトを教えてください。 よろしくお願いします。

  • 隣接交換法のアルゴリズムについて

    隣接交換法(バブルソート)のアルゴリズムについて悩んでいます。 Q:配列「データ」には10個の要素があり、この配列「データ」を降順に並び替えるための隣接交換法アルゴリズムは? 一応、自分なりにアルゴリズムを考えたのですが、ループを抜けるチャンスが、【『要素』の数-1】回あるといわれ、それを考慮したアルゴリズムを考えよ、と言われました。 (そのチャンスというのが、どこにくるのかがわかりません。) http://oshiete1.goo.ne.jp/kotaeru.php3?q=290051も参照しましたが、よくわかりません。 すみませんが、教えていただけないでしょうか?よろしくお願いします。

  • ダイクストラ法の実行時間

    ダイクストラ法の実行時間が, O(n)なのは様々なサイトを見ていると分かるのですが, なぜ,O(n^2)なのかが分かりません. それと,ヒープを使った際に, O((n+m)log(n))になる理由がわかりません. どなたか,分かりやすい解説をお願いします.

  • c# でList<T>と似たものを作りたい

    c#初心者です。 c#のList<T>などのコレクションのように動的かつ高速に配列の容量を変更できるクラスを作りたいのですが、Listの構造すら分からないわ、普通の配列で色々やってみて上手くいかないわで困っています。 要はListやDictionaryがもつAddメソッドの基本的な内容が分かれば良いのですが、どなたか教えていただけないでしょうか?

  • VBでリスト構造を実現するには?

    DTDとHTMLのパーサを作ろうと思い、データを解析して配列に入れようとしていたのですが、配列じゃなくてリスト構造で実現しろというお達しをうけて非常に困っています。 そもそもVBでリスト構造って実現できるんでしょうか?実現できるのであればその方法を教えていただきたいと思っています。

  • 【アルゴリズム】隣接リストに関する質問です

    皆さんこんにちは。当方、情報系の学生です。 こちらの問題の考え方が分からず困っています。 「下図のような無向グラフを頂点Aより深さ優先探索したところ、数字で示したように訪問順序が得られた。このとき、隣接リストはどうなるか示せ。」 自分は、単純に実線でリンクしている頂点のみをピックアップして A→C B→D C→A→F D→B→F ・ ・ ・ のようにリストにすれば良いかと考えたのですが、間違いでしょうか。 お詳しい方、ご助言いただけましたら幸いです。 よろしくお願いいたします。

  • リスト構造について

    C++言語で住所録を作ろうとしていますが、今回始めてポインタを使ったリスト構造を使ってみるこ とにしました。 そこでふと思ったのですが、VBではポインタなど無いと思ったのですが、このような場合はどうやって リスト構造を実現するのですか? VBは昔触ったことが有りますが、今は触っていません。 イメージが分かる程度の回答で結構です。

  • リストボックスにリストを設定

    リストボックスにリストを設定 VB2005,XP です。 配列a(3,10)という配列があったとします。 この配列の(0,0~10)の値をリストに設定(バインド)したり、 構造体b(10) b().NO b().Name b().scale ・・・・ のb.Nameをリストに設定(バインド)する方法を 教えてください。 よろしくお願いします。

  • c言語のリスト

    C言語で構造体まではどこのサイトでも乗っていますが、リスト、スタック、キュウなどのことになるのありません。どこか詳しく解説しているサイトご存じないですか?おしえてください。

専門家に質問してみよう