Files
leetcode-master/problems/0787.K站中转内最便宜的航班.md
programmercarl a79bf97d72 Update
2024-03-14 12:09:57 +08:00

1.3 KiB

class Solution {
public:
    int findCheapestPrice(int n, vector<vector<int>>& flights, int src, int dst, int k) {
        vector<int> minDist(n , INT_MAX/2);
        minDist[src] = 0;
        vector<int> minDist_copy(n); // 用来记录每一次遍历的结果
        for (int i = 1; i <= k + 1; i++) {
            minDist_copy = minDist; // 获取上一次计算的结果
            for (auto &f : flights) {
                int from = f[0];
                int to = f[1];
                int price = f[2];
                if (minDist[to] > minDist_copy[from] + price) minDist[to] = minDist_copy[from] + price;
            }

        }
        int result = minDist[dst] == INT_MAX/2 ? -1 : minDist[dst];
        return result;
    }
};
class Solution {
public:
    int findCheapestPrice(int n, vector<vector<int>>& flights, int src, int dst, int k) {
        vector<int> minDist(n , INT_MAX/2);
        minDist[src] = 0;
        for (int i = 1; i <= k + 1; i++) {
            for (auto &f : flights) {
                int from = f[0];
                int to = f[1];
                int price = f[2];
                if (minDist[to] > minDist[from] + price) minDist[to] = minDist[from] + price;
            }
        }
        int result = minDist[dst] == INT_MAX/2 ? -1 : minDist[dst];
        return result;
    }
};