Warshall-Floyd
(Graph/WarshallFloyd.cpp)
説明
重み付き(有向)グラフにおける全頂点間の最短距離を求める。
-
vector<vector<long long>> WarshallFloyd(int N,vector<vector<long long>> dist)
: dist[i][j]
= 頂点i
と頂点j
を結ぶ辺の距離(ただしi
とj
の間に辺が存在しないならばINF
)である頂点数がN
のグラフに対して、全頂点間の最短距離を求める。返り値は2次元配列に格納される(ただし頂点間に経路が存在しないならばINF
)。計算量 $O(N^3)$
tips : このアルゴリズムは負の辺でも動作する。返り値の配列をret
とすると、ret[i][i] < 0
となるi
が存在するならばグラフには負閉路が含まれている。
Verified with
Code
Back to top page