classSolution { public: intfindCheapestPrice(int n, vector<vector<int>>& flights, int src, int dst, int K){ vector<vector<long> >dp(n+1,vector<long>(K+1,INT_MAX));//因为INT_MAX,所以变成long类型的了 for(auto flight : flights)//先进行初始化 if(flight[0] == src) dp[flight[1]][0] = flight[2];
for(int i = 1 ; i <= K ; i++)//从0开始的话会越界,因为已经初始化过直接不经中转到的情况了所以直接k从1开始就行了 for(auto flight : flights) { int s = flight[0]; int e = flight[1]; int v = flight[2]; dp[e][i] = min(dp[e][i],min(dp[e][i-1],dp[s][i-1]+v)); } if(dp[dst][K] == INT_MAX) return-1; return dp[dst][K]; } };