[白俊]1404号-(Python Python)-floyd-Warshall
1285 ワード
質問リンク:https://www.acmicpc.net/problem/11404
この問題はfloyd-walshアルゴリズムの問題です.
floydwalshは、すべての頂点間の最短パスを探す検索アルゴリズムです.の1つの頂点から別の頂点への最小コストが配列に格納されます.(できない場合はinfとして配列値を保存) 3でforゲートを通過する頂点を設定した後、その頂点を通過した後、費用が減少した場合、この値を変更します. の手順を繰り返し、すべての頂点間の最短パスを探索します. DPと見なすこともでき,コードは簡単で,説明はコードに注釈されている.
この問題はfloyd-walshアルゴリズムの問題です.
floydwalshは、すべての頂点間の最短パスを探す検索アルゴリズムです.
import sys
input = sys.stdin.readline
inf = sys.maxsize
n = int(input())
m = int(input())
#최단 경로를 담는 배열
dist = [[inf] * n for _ in range(n)]
for _ in range(m):
a, b, c = map(int, input().split())
if dist[a-1][b-1] > c:
dist[a-1][b-1] = c
for k in range(n): #거치는 점
for i in range(n): #시작 점
for j in range(n): #끝 점
# k를 거쳤을 때 더 적은 경로
if i != j and dist[i][j] > dist[i][k] + dist[k][j]:
dist[i][j] = dist[i][k] + dist[k][j]
for i in dist:
for j in i:
if j == inf:
print(0, end=" ")
else:
print(j, end=" ")
print()
Reference
この問題について([白俊]1404号-(Python Python)-floyd-Warshall), 我々は、より多くの情報をここで見つけました https://velog.io/@hamfan524/백준-11404번-Python-파이썬-Floyd-Warshallテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol