比赛 2025暑期集训第5场图论专场 评测结果 AAAAAAAAAA
题目名称 Timeline 最终得分 100
用户昵称 健康铀 运行时间 1.566 s
代码语言 C++ 内存使用 5.83 MiB
提交时间 2025-07-09 09:23:17
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;

int main() {
    freopen("usaco_Feb_timeline.in", "r", stdin);
    freopen("usaco_Feb_timeline.out", "w", stdout);

    int N, M, C;
    cin >> N >> M >> C;
    vector<long long> T(N + 1);
    for (int i = 1; i <= N; i++) {
        cin >> T[i];
    }

    vector<vector<pair<int, int>>> G(N + 1);
    vector<int> D(N + 1, 0);

    for (int i = 0; i < C; i++) {
        int a, b, x;
        cin >> a >> b >> x;
        G[a].push_back({b, x});
        D[b]++;
    }

    queue<int> Q;
    for (int i = 1; i <= N; i++) {
        if (D[i] == 0) {
            Q.push(i);
        }
    }

    while (!Q.empty()) {
        int u = Q.front();
        Q.pop();
        for (auto &e : G[u]) {
            int v = e.first;
            int w = e.second;
            if (T[u] + w > T[v]) {
                T[v] = T[u] + w;
            }
            D[v]--;
            if (D[v] == 0) {
                Q.push(v);
            }
        }
    }

    for (int i = 1; i <= N; i++) {
        cout << T[i] << endl;
    }

    return 0;
}