| 比赛 | 2025暑期集训第5场图论专场 | 评测结果 | AAAAAAAAAA | 
    | 题目名称 | Timeline | 最终得分 | 100 | 
    | 用户昵称 | Lixj | 运行时间 | 1.465 s | 
    | 代码语言 | C++ | 内存使用 | 4.70 MiB | 
    | 提交时间 | 2025-07-09 10:03:50 | 
显示代码纯文本
#include<bits/stdc++.h> 
using namespace std;
const int N=100006;
struct edge{
    int v,w,next;
}e[N];
int f[N],ti[N],head[N],total,n,m,c;
queue<int> q;
void add(int u,int v,int w){
    e[++total].v=v;
    e[total].w=w;
    e[total].next=head[u];
    head[u]=total;
}
int main(){
    freopen("usaco_Feb_timeline.in","r",stdin);
    freopen("usaco_Feb_timeline.out","w",stdout);
    cin>>n>>m>>c;
    for(int i=1;i<=n;i++)
        cin>>f[i];
    for(int i=1;i<=c;i++){
        int x,y,z;
        cin>>x>>y>>z;
        add(x,y,z);
        ti[y]++;
    }
    for(int i=1;i<=n;i++)
        if(!ti[i])
            q.push(i);
    while(!q.empty()){
        int u=q.front();
        q.pop();
        for(int i=head[u];i;i=e[i].next){
            int v=e[i].v,w=e[i].w;
            f[v]=max(f[v],f[u]+w);
            ti[v]--;
            if(!ti[v])
                q.push(v);
        }
    }
    for(int i=1;i<=n;i++)
        cout<<f[i]<<endl;
    return 0;
}