첫번째 코드
플로이드-워셜 방법을 처음 써보았다.
코드는 책을 참고했다.
앞서 작성한 다양한 방법의 그래프 문제들의 알고리즘들을 빨리 정리해야할 필요성이 느껴진댜....
복잡하다.. 어렵당;
import sys
input = sys.stdin.readline
n = int(input())
m = int(input())
distance = [[sys.maxsize for j in range(n+1)] for i in range(n+1)]
for i in range(1, n+1):
distance[i][i] = 0
for i in range(m):
s, e, v = map(int, input().split())
if distance[s][e] > v:
distance[s][e] = v
for k in range(1, n+1):
for i in range(1, n+1):
for j in range(1, n+1):
if distance[i][j] > distance[i][k] + distance[k][j]:
distance[i][j] = distance[i][k] + distance[k][j]
for k in range(1, n+1):
for j in range(1, n+1):
if distance[k][j] == sys.maxsize:
print(0, end = ' ')
else:
print(distance[k][j], end = ' ')
print()
통과
링크
programmers/백준/Gold/11404. 플로이드 at main · ornni/programmers
repository for recording Programmers Algorithm problem solving - ornni/programmers
github.com
'코딩 테스트 > do it! 알고리즘 코딩테스트' 카테고리의 다른 글
064 최소 스패닝 트리 (0) | 2024.07.18 |
---|---|
063 케빈 베이컨의 6단계 법칙 (0) | 2024.07.18 |
062 경로 찾기 (0) | 2024.07.16 |
059 타임머신 (0) | 2024.07.11 |
060 오민식의 고민 (0) | 2024.07.11 |