比赛 2025暑期集训第5场图论专场 评测结果 AAAAAAAAAA
题目名称 Timeline 最终得分 100
用户昵称 Ruyi 运行时间 0.651 s
代码语言 C++ 内存使用 6.22 MiB
提交时间 2025-07-09 09:03:37
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int maxn=100010;
struct e_node{
    int u,v,w,nxt;
}E[maxn<<1];
int head[maxn],e_tot=0;
void in_e(int u,int v,int w){
    E[++e_tot]={u,v,w,0};
    E[e_tot].nxt=head[u];head[u]=e_tot;
}
int n,m,c;
int dis[maxn],cnt[maxn],s[maxn];
queue<int> mque;
void init(){
    scanf("%d%d%d",&n,&m,&c);
    for(int i=1;i<=n;i++) scanf("%d",&s[i]);
    for (int i=0;i<c;i++){
        int u,v,w;
        scanf("%d%d%d",&u,&v,&w);
        in_e(u,v,w);
    }
    for (int i=1;i<=n;i++) in_e(0,i,s[i]);
    memset(dis,-0x3f,sizeof(dis));
}
int work(){
    mque.push(0);cnt[0]++;dis[0]=0;
    while (!mque.empty()){
        int u=mque.front(); mque.pop();
        for (int ip=head[u];ip;ip=E[ip].nxt){
            int to=E[ip].v,w=E[ip].w;
            if (dis[to]<dis[u]+w){
                dis[to]=dis[u]+w;
                mque.push(to);cnt[to]++;
                /*if (cnt[to]>=n+1) {
                    printf("NO SOLUTION\n");
                    return 0;
                }*/
            }
        }
    }
    return 1;
}
int main(){
    freopen("usaco_Feb_timeline.in","r",stdin);
    freopen("usaco_Feb_timeline.out","w",stdout);
    init();
    int no=work();
    //if (!no) return 0;
    /*int minx=10000000;
    for (int i=1;i<=n;i++)
        if (minx>dis[i])minx=dis[i];*/
    for (int i=1;i<=n;i++)
        printf("%d\n",dis[i]);
    return 0;    
}