반응형
리뷰
출력에서 예제 테스트용인 인덱스 5를 넣었다가 한번 틀려버렸다 ㅠ
문제 풀이
- n, m값을 받아주고 e는 빈 리스트를 n + 1개, dist는 INF 를 n + 1개로 초기화 해준다.
- m개 줄에 a, b, c를 받아주고 a번 노드에 거리 c와 도착지점 b를 리스트로 추가해 준다.
- start와 end가 될 도시의 정보를 받아와 주고 힙에 [0, start]를, start 도시의 거리를 0으로 초기화 해준다.
- while루프를 시작하여 현재 누적 거리보다 더 빠른 거리가 있을 경우 해당 도시까지의 거리를 최신화 해준다.
- while루프를 마친 후 end 도시까지의 거리를 dist[end]를 통해 출력해 준다.
참고 사항
마지막줄에 시작 도시와 도착 도시의 정보가 있으니 꼭 참고하자
정답 코드
import sys
import heapq
INF = sys.maxsize
n = int(sys.stdin.readline())
m = int(sys.stdin.readline())
e = [[] for _ in range(n + 1)]
dist = [INF] * (n + 1)
for _ in range(m):
a, b, c, = map(int, sys.stdin.readline().split())
e[a].append([c, b])
start, end = map(int, sys.stdin.readline().split())
heap = [[0, start]]
dist[start] = 0
while heap:
cd, cn = heapq.heappop(heap)
if dist[cn] != cd: continue
for nd, nn in e[cn]:
if dist[nn] > cd + nd:
dist[nn] = cd + nd
heapq.heappush(heap, [dist[nn], nn])
print(dist[end])
728x90
반응형
'알고리즘 공부 > 파이썬(Python)' 카테고리의 다른 글
백준 11779번 최소비용 구하기 2 파이썬 다익스트라 (0) | 2024.08.08 |
---|---|
백준 1238번 파티 파이썬 (0) | 2024.07.25 |
백준 18352번 특정 거리의 도시 찾기 파이썬 (0) | 2024.07.21 |
백준 1753번 최단경로 파이썬 (0) | 2024.07.21 |
백준 3040번 백설 공주와 일곱 난쟁이 파이썬 (0) | 2024.07.19 |