比赛 2025暑期集训第5场图论专场 评测结果 AAAAATTTTT
题目名称 Timeline 最终得分 50
用户昵称 pcx 运行时间 15.454 s
代码语言 C++ 内存使用 6.48 MiB
提交时间 2025-07-09 08:55:37
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int n,m,c,dis[N],cnt[N];
bool vis[N];
int h[N],w[N],nex[N],to[N],idx;
queue<int> q;
void add(int x,int y,int s){
	to[++idx]=y;
	w[idx]=s;
	nex[idx]=h[x];
	h[x]=idx;
	return;
}
void spfa(){
	q.push(0);dis[0]=0;vis[0]=1;cnt[0]++;
	while(!q.empty()){
		int x=q.front();q.pop();vis[x]=0;
		for(int i=h[x];~i;i=nex[i]){
			int v=to[i];int va=w[i];
			if(dis[v]<dis[x]+va){
				dis[v]=dis[x]+va;
			}
			if(!vis[v]){
				q.push(v);
				vis[v]=1;
			}
			cnt[v]++;
		}
	}
}
int main(){
	freopen("usaco_Feb_timeline.in","r",stdin);
	freopen("usaco_Feb_timeline.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	memset(dis,-0x3f,sizeof(dis));
	memset(h,-1,sizeof(h));
	cin>>n>>m>>c;
	for(int i=1;i<=n;i++){
		int a;
		cin>>a;
		add(0,i,a);
	}
	for(int i=1;i<=c;i++){
		int a,b,x;
		cin>>a>>b>>x;
		add(a,b,x);
	}
	spfa();
	for(int i=1;i<=n;i++){
		cout<<dis[i]<<endl;
	}
	return 0;
}