K 정류장 내 최저가 항공편

3905 단어 leetcodepython
몇 개의 항공편으로 연결된 n개의 도시가 있습니다. flight[i] = [fromi, toi, pricei]가 도시 fromi에서 도시 toi까지 비용이 pricei인 항공편이 있음을 나타내는 항공편 배열이 제공됩니다.

또한 세 개의 정수 src, dst 및 k가 주어지면 src에서 dst까지 최대 k 정지로 가장 저렴한 가격을 반환합니다. 해당 경로가 없으면 -1을 반환합니다.


class Solution:
    def findCheapestPrice(self, n: int, flights: List[List[int]], src: int, dst: int, k: int) -> int:
        prices = [float("inf")] * n
        prices[src] = 0

        for i in range(k + 1):
            tmpPrices = prices.copy()

            for s, d, p in flights:  # s=source, d=dest, p=price
                if prices[s] == float("inf"):
                    continue
                if prices[s] + p < tmpPrices[d]:
                    tmpPrices[d] = prices[s] + p
            prices = tmpPrices

        return -1 if prices[dst] == float("inf") else prices[dst]

좋은 웹페이지 즐겨찾기