比赛 2025暑期集训第5场图论专场 评测结果 AAAAAAAAAA
题目名称 Timeline 最终得分 100
用户昵称 李金泽 运行时间 0.651 s
代码语言 C++ 内存使用 4.94 MiB
提交时间 2025-07-09 08:35:00
显示代码纯文本
#include<cstdio>
#include<queue>
#define N 100005
using namespace std;
int n,m,M,f[N],h[N],cnt,x,y,z;bool vis[N];
struct edge{int v,n,w;}e[N];
void ad(int u,int v,int w){e[++cnt]={v,h[u],w};h[u]=cnt;}
void spfa()
{
	queue<int>q;
	for(int i=1;i<=n;i++)q.push(i),vis[i]=1;
	while(q.size())
	{
		int u=q.front();
		q.pop();
		vis[u]=0;
		for(int i=h[u];i;i=e[i].n)
		{
			int v=e[i].v,w=f[u]+e[i].w;
			if(w>f[v])
			{
				f[v]=w;
				if(!vis[v])vis[v]=1,q.push(v);
			}
		}
	}
}
int main(){
	freopen("usaco_Feb_timeline.in","r",stdin);freopen("usaco_Feb_timeline.out","w",stdout);
	scanf("%d%d%d",&n,&M,&m);
	for(int i=1;i<=n;i++)scanf("%d",f+i);
	while(m--)scanf("%d%d%d",&x,&y,&z),ad(x,y,z);
	spfa();
	for(int i=1;i<=n;i++)printf("%d\n",f[i]);
	return 0;
}