728x90
- 한 노드에서 다른 모든 노드까지 가는데 최소비용
- 작동 원리
- 간선 : 인접 리스트
- 거리 배열 : 초기값 무한대로 설정
- 힙 시작점 추가
- 힙에서 현재 노드 빼면서, 간선 통할 때 더 거리 짧아진다면
- 거리 갱신 및 힙에 추가
# 초기값 갱신
dist[K] = 0
# K는 시작 값
heapq.heappush(heap,(0,K))
while heap:
# w : 현재 비용, v : 현재 노드
w, v = heapq.heappop(heap)
# v가 갱신되기 전 경로면 그냥 버리기
if w != dist[v]:
continue
for nw,nv in edge[v]:
if dist[nv] > dist[v] + nw:
dist[nv] = dist[v] + nw
heapq.heappush(heap, (dist[nv],nv))
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[프로그래머스] Lv.2 문자열 압축 - Python (0) | 2022.05.12 |
---|---|
알고리즘 - 플로이드 (0) | 2022.05.05 |
[SWEA] 1238. Contact - Python (0) | 2022.04.21 |
[SWEA] 5688. 세제곱근을 찾아라 - Python (0) | 2022.04.12 |
[SWEA] 1232. 사칙연산 - Python (0) | 2022.04.11 |
댓글