比赛 |
2025暑期集训第5场图论专场 |
评测结果 |
AAAAAAAAAA |
题目名称 |
Timeline |
最终得分 |
100 |
用户昵称 |
KKZH |
运行时间 |
1.996 s |
代码语言 |
C++ |
内存使用 |
6.60 MiB |
提交时间 |
2025-07-09 08:41:17 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=4e5;
int n,m,c,cnt;
int head[N],dis[N],f[N];
struct node1{
int num,len;
friend bool operator<(const node1 a,const node1 b){
return a.len<b.len;
}
};
priority_queue <node1> q;
struct node{
int next,to,len;
}ed[N];
void add(int x,int y,int z){
ed[++cnt].next=head[x];
ed[cnt].to=y;
ed[cnt].len=z;
head[x]=cnt;
}
void dij(){
dis[0]=0;
q.push({0,0});
while(!q.empty()){
int x=q.top().num;
q.pop();
for(int i=head[x];i!=-1;i=ed[i].next){
int y=ed[i].to,z=ed[i].len;
if(dis[y]<dis[x]+z){
dis[y]=dis[x]+z;
q.push({y,dis[y]});
}
}
}
}
int main(){
freopen("usaco_Feb_timeline.in","r",stdin);
freopen("usaco_Feb_timeline.out","w",stdout);
memset(head,-1,sizeof(head));
cin>>n>>m>>c;
int x,y,z;
for(int i=1;i<=n;i++){
cin>>x;
add(0,i,x);
}
for(int i=1;i<=c;i++){
cin>>x>>y>>z;
add(x,y,z);
}
dij();
for(int i=1;i<=n;i++) cout<<dis[i]<<endl;
return 0;
}