0%

787. K 站中转内最便宜的航班(Bellman-Ford)

思路讲解

这题的关键在于K站中转站内。

通过clone数组备份,确保每次松弛只松弛一次,不会连续松弛,确保不超出题设要求。

AC代码

https://leetcode.cn/problems/cheapest-flights-within-k-stops/submissions/615024531

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public:
int findCheapestPrice(int n, vector<vector<int>>& flights, int src, int dst, int k) {
const int INF=static_cast<int>(1e9)+7;
vector<int> dist(n+5,INF);
dist[src]=0;
for(int limit=0;limit<=k;++limit){
vector<int> clone(dist.begin(),dist.end());
for(int i=0;i<flights.size();++i){
int u=flights[i][0],v=flights[i][1],price=flights[i][2];
if(dist[v]>clone[u]+price){
dist[v]=clone[u]+price;
}
}
}
return (dist[dst]==INF?-1:dist[dst]);
}
};

心路历程(WA,TLE,MLE……)