플로이드 워샬 알고리즘
생성일: 2022년 2월 27일 오후 4:25
구현 코드 ⭐
# 플로이드 워샬 알고리즘
import sys
sys.stdin = open("input.txt", "rt")
if __name__ == "__main__":
n, m = map(int, input().split())
dis = [[5000 for _ in range(n+1)] for _ in range(n+1)]
# 출발지와 목적지가 같은 경우는 0으로 초기화
for i in range(1, n+1):
dis[i][i] = 0
for i in range(m):
a, b, c = map(int, input().split())
dis[a][b] = c
# 플로이드 워샬 알고리즘
for k in range(1, n+1):
for i in range(1, n+1):
for j in range(1, n+1):
dis[i][j] = min(dis[i][j], dis[i][k]+dis[k][j])
for i in range(1, n+1):
for j in range(1, n+1):
if dis[i][j] == 5000:
print('M', end=' ')
else:
print(dis[i][j], end=' ')
print()
- 플로이드 워샬 알고리즘은 3중 for문을 통해 해결한다.
여기서 i는 출발위치, j는 도착 위치이다. k는 거쳐가는 위치이다. 따라서 dis[i][k]+dis[k][j] 는 i⇒k⇒j 에 해당되는 경로에서의 비용 합이다.# 플로이드 워샬 알고리즘 for k in range(1, n+1): for i in range(1, n+1): for j in range(1, n+1): dis[i][j] = min(dis[i][j], dis[i][k]+dis[k][j])
Author And Source
이 문제에 관하여(플로이드 워샬 알고리즘), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lsj8706/플로이드-워샬-알고리즘저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)