백준11404번 플로이드
2021.06.20 플로이드
Solution
플로이드 알고리즘으로 해결하였습니다.
- input
start
,end
로 2차원 배열(input_map
) 에cost
저장- 노선이 여러개일 경우 짧은 것으로 갱신
floyd
알고리즘으로 모든 최단 경로 찾기- 결과가
inf
인 경우, 경로가 없는 것이므로 0으로 수정 (문제 조건)
Source
# 2021.06.20
inf = int(1e9)
def floyd(input_map, V):
for i in range(V):
input_map[i][i] = 0
for k in range(V):
for i in range(V):
for j in range(V):
input_map[i][j] = min(input_map[i][j], input_map[i][k] + input_map[k][j])
for i in range(V):
for j in range(V):
if input_map[i][j] == inf:
input_map[i][j] = 0
return input_map
V = int(input())
M = int(input())
input_map = [[inf] * V for _ in range(V)]
for _ in range(M):
start, end, cost = map(int, input().split())
input_map[start-1][end-1] = min(cost, input_map[start-1][end-1])
result = floyd(input_map, V)
for i in range(V):
print(*result[i])
'SW > 알고리즘 문제풀이' 카테고리의 다른 글
백준18353번 병사 배치하기 (0) | 2021.06.16 |
---|---|
백준1932 정수삼각형 (0) | 2021.06.12 |
백준14501 퇴사 (0) | 2021.06.12 |
공유기 설치 (0) | 2021.05.19 |
카드정렬하기 (0) | 2021.05.19 |
Comment