티스토리 뷰

cs/알고리즘

leetCode - Network Delay Time

vivelakorea 2021. 3. 21. 17:13
class Solution:
    def networkDelayTime(self, times: List[List[int]], n: int, k: int) -> int:
        
        graph = collections.defaultdict(list)
        for x, y, w in times:
            graph[x].append((y, w))
        
        dist = {}
        Q = [(0, k)]
        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))
        
        max = 0
        for i in range(n):
            if i + 1 not in dist:
                return -1
            if dist[i + 1] > max:
                max = dist[i + 1]
        return max

우선순위 큐를 이용한 다익스트라 알고리즘 구현이다.

 

'cs > 알고리즘' 카테고리의 다른 글

leetCode - Merge Two Binary Trees  (0) 2021.03.24
leetCode - Subsets  (0) 2021.03.13
leetCode - Combination Sum  (0) 2021.03.13
leetCode - Combinations  (0) 2021.03.13
leetCode - Permutations  (0) 2021.03.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함