1. class Solution {
    2. private:
    3. const int NOT_CONNECTED = 10000000;
    4. public:
    5. int findCheapestPrice(int n, vector<vector<int>> &flights, int src, int dst, int k) {
    6. vector<vector<int> > G(n, vector<int>(n, NOT_CONNECTED));
    7. for (auto &flight : flights) {
    8. G[flight[0]][flight[1]] = flight[2];
    9. }
    10. for (int i = 0; i < n; ++i)
    11. G[i][i] = 0;
    12. vector<vector<int> > dp(k + 2, vector<int>(n, NOT_CONNECTED));
    13. dp[0][src] = 0;
    14. for (int i = 1; i <= k + 1; ++i) {
    15. for (int j = 0; j < n; ++j) {
    16. for (int l = 0; l < n; ++l) {
    17. dp[i][j] = min(dp[i][j], dp[i - 1][l] + G[l][j]);
    18. }
    19. }
    20. }
    21. return dp[k + 1][dst] == NOT_CONNECTED ? -1 : dp[k + 1][dst];
    22. }
    23. };