반응형
import sys
input = sys.stdin.readline
INF = int(1e9) # 무한을 의미하는 10억 값 설정
n = int(input())
graph = []
for _ in range(n):
path = list(map(int, input().split()))
for j in range(len(path)): # 0 이라면 INF로 변경하여 넣어주기
if path[j] == 0:
path[j] = INF
graph.append(path)
for k in range(n):
for a in range(n):
for b in range(n):
graph[a][b] = min(graph[a][b], graph[a][k] + graph[k][b])
for a in graph:
for b in a:
if b != INF:
print(1, end=" ")
else:
print(0, end=" ")
print()
플로이드 워셜 알고리즘의 시간 복잡도는 O(N^3)...
파이썬은 초당 2000만번이 가능
따라서 노드의 개수가 300 이하일 때 사용 가능하다.
(다익스트라는 N^2이므로 5000개 이하일 때 사용 가능함)
반응형
'취준 > 코딩테스트' 카테고리의 다른 글
백준 1764 (python): 듣보잡 - 포함 여부 확인 시 set 사용하자 (1) | 2024.02.27 |
---|---|
백준 1789 (python): 수들의 합 (0) | 2024.02.27 |
백준 1541 (python): 잃어버린 괄호 (0) | 2024.02.03 |
백준 18406 (python): 럭키 스트레이트 (0) | 2024.02.02 |
백준 11057 (python): 오르막 수 (1) | 2024.02.01 |