11404번: 플로이드
👉문제 링크
느낀점
- 간단했다.
- 플로이드 워셜 문제를 풀어보았다.
- 세 개 점 중에서 제일 위에 있는 a는 경유지여야 한다(했다).
- 세 개 점이 다르다는 것을 보장해야한다.
정답 코드 및 해설
N_city = int(input())
N_bus = int(input())
S_city = [[float('inf') for _ in range(N_city)] for __ in range(N_city)]
for bus in range(N_bus):
a, b, c = map(int, input().split())
a -= 1
b -= 1
if c < S_city[a][b]:
S_city[a][b] = c
for a in range(N_city):
for b in range(N_city):
if a != b:
for c in range(N_city):
if a != c and b != c:
temp_route = S_city[b][a] + S_city[a][c]
if temp_route < S_city[b][c]:
S_city[b][c] = temp_route
for a in range(N_city):
for b in range(N_city):
if S_city[a][b] == float('inf'):
S_city[a][b] = 0
for a in S_city:
print(" ".join(map(str, a)))
Author And Source
이 문제에 관하여(11404번: 플로이드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@devgosunman/11404번-플로이드
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
N_city = int(input())
N_bus = int(input())
S_city = [[float('inf') for _ in range(N_city)] for __ in range(N_city)]
for bus in range(N_bus):
a, b, c = map(int, input().split())
a -= 1
b -= 1
if c < S_city[a][b]:
S_city[a][b] = c
for a in range(N_city):
for b in range(N_city):
if a != b:
for c in range(N_city):
if a != c and b != c:
temp_route = S_city[b][a] + S_city[a][c]
if temp_route < S_city[b][c]:
S_city[b][c] = temp_route
for a in range(N_city):
for b in range(N_city):
if S_city[a][b] == float('inf'):
S_city[a][b] = 0
for a in S_city:
print(" ".join(map(str, a)))
Author And Source
이 문제에 관하여(11404번: 플로이드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@devgosunman/11404번-플로이드저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)