(LeetCode)743. 네트워크 딜레이 타임
by hutswing
(LeetCode)743. 네트워크 딜레이 타임
문제
아이디어
- 다익스트라 알고리즘 적용
코드
import heapq
class Solution:
def networkDelayTime(self, times: List[List[int]], N: int, K: int) -> int:
graph = collections.defaultdict(list)
# 그래프 인접 리스트 구성
for u, v, w in times:
graph[u].append((v, w))
# 큐 변수: [(소요 시간, 정점)]
Q = [(0, K)]
dist = collections.defaultdict(int)
# 우선순위 큐 최솟값 기준으로 정점까지 최단경로 삽입
while Q:
time, node = heapq.heappop(Q)
if node not in dist:
dist[node] = time
for v, w in graph[node]:
alt = time + w
heapq.heappush(Q, (alt, v))
# 모든 노드의 최단 경로 존재 여부 판별
if len(dist) == N:
return max(dist.values())
return -1
Subscribe via RSS