文章

225

粉丝

165

获赞

361

访问

107.3k

头像
K站中转内最便宜的航班 题解:
P807
发布于2026年3月6日 01:42
阅读数 79

#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>

using namespace std;

const int INF = 1e9;

int main() {
    int n, src, dst, k;
    cin >> n >> src >> dst >> k;
    int m;
    cin >> m;
    
    vector<vector<int> > flights(m, vector<int>(3));
    for (int i = 0; i < m; ++i) {
        cin >> flights[i][0] >> flights[i][1] >> flights[i][2];
    }
    
    // dp[stops][city] = 经过 stops 次航班到达 city 的最低价格
    // stops 取值范围 0 到 k+1
    vector<vector<int> > dp(k + 2, vector<int>(n, INF));
    dp[0][src] = 0;
    
    for (int stops = 1; stops <= k + 1; ++stops) {
        // 先复制上一轮的结果(也可不复制,但为了取最小值时保留未更新的城市)
        // 实际上 dp[stops] 初始为 INF,我们只需用上一轮更新即可
        for (int i = 0; i < m; ++i) {
            int u = flights[i][0];
            int v = flights[i][1];
            int w = flights[i][2];
            if (d...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发