787. Cheapest Flights Within K Stops - LeetCode Solution


Dynamic Programming Heap

Python Code:

class Solution:
    def findCheapestPrice(self, n: int, flights: List[List[int]], src: int, dst: int, K: int) -> int:
        if src == dst: return 0
        
        d, seen = collections.defaultdict(list), collections.defaultdict(lambda: float('inf'))
        for u, v, p in flights:
            d[u] += [(v, p)]
    
        queue = [(src, -1, 0)]
        
        while queue:
            
            position, k, cost = queue.pop(0)
            
            if position == dst or k == K: 
                continue 
            for nei, p in d[position]:
                if cost + p >= seen[nei]:
                    continue
                else:
                    seen[nei] = cost+p
                    queue += [(nei, k+1, cost+p)]
                
        return seen[dst] if seen[dst] < float('inf') else -1
        


Comments

Submit
0 Comments
More Questions

313B - Ilya and Queries
579A - Raising Bacteria
723A - The New Year Meeting Friends
302A - Eugeny and Array
1638B - Odd Swap Sort
1370C - Number Game
1206B - Make Product Equal One
131A - cAPS lOCK
1635A - Min Or Sum
474A - Keyboard
1343A - Candies
1343C - Alternating Subsequence
1325A - EhAb AnD gCd
746A - Compote
318A - Even Odds
550B - Preparing Olympiad
939B - Hamster Farm
732A - Buy a Shovel
1220C - Substring Game in the Lesson
452A - Eevee
1647B - Madoka and the Elegant Gift
1408A - Circle Coloring
766B - Mahmoud and a Triangle
1618C - Paint the Array
469A - I Wanna Be the Guy
1294A - Collecting Coins
1227A - Math Problem
349A - Cinema Line
47A - Triangular numbers
1516B - AGAGA XOOORRR