Sign in
or
Register
Courses
Textbook
Compiler
Contests
Topics
Courses
グラフ理論
ダイクストラのアルゴリズム
Module:
ダイクストラのアルゴリズム
Problem
1
/14
ダイクストラ: 始まり (C++)
Theory
Click to read/hide
n 個の頂点と m 個の辺を持つ有向または無向の重み付きグラフを指定します。すべてのエッジの重みは負ではありません。いくつかの開始頂点 s が指定されています。頂点 から他のすべての頂点までの最短パスの長さを見つけ、最短パスそのものを出力する方法も提供する必要があります。
この問題は「単一ソース最短経路問題」と呼ばれます。 (単一ソース最短経路問題)。
1-K BFS と同じタスクを実行しますが、K は関係ありません。また、1-K BFS と同様に、負のエッジを適切に処理しません。
アルゴリズム
:
ダイクストラのアルゴリズム自体は N 回の反復で構成されます。次の反復では、頂点 V まだマークされていない頂点のうち、その頂点までの距離が最も小さい場合、この頂点がマークされ、そこから隣接する頂点の緩和が発生します。
アルゴリズムの最終的な漸近動作は次のとおりです: O(n
2
+ m)
Problem
有向加重グラフが表示されます。指定された頂点から別の頂点までの最短距離を見つけます。
入力
最初の行には、N、S、F (1≤ N≤ 100、1≤ S、F≤ N) という 3 つの数値が含まれています。グラフの頂点の数、S -初期頂点と F –最後の。次の N 行に、それぞれ N 個の数字を入力します (100 を超えない)。グラフの重み隣接行列。-1 は頂点間にエッジがないことを意味し、負でない数値 –指定された重みのエッジの存在。ゼロは行列の主対角に書き込まれます。
出力
希望の距離を表示するか、指定した頂点間にパスがない場合は -1 を表示する必要があります。
例
<頭>
#
入力
出力
<本体>
1
3 2 1
0 1 1
4 0 1
2 1 0
3
表>
1000
ms
32 Mb
Rules for program design and list of errors in automatic problem checking
Teacher commentary