社区讨论
P6145 玄关求调
P6145[USACO20FEB] Timeline G参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m58zme4n
- 此快照首次捕获于
- 2024/12/29 10:24 去年
- 此快照最后确认于
- 2024/12/29 15:16 去年
码风优良 简洁易懂
程序的思路很清晰 但是就是不知道哪个细节出了点问题
求调
CPP#include<bits/stdc++.h>
using namespace std;
const int MAXN=200009;
int n,m,c;
int sum,ans[MAXN],in[MAXN];
int s[MAXN],head[MAXN];
struct edge{
int next;
int to;
int h;
}d[MAXN];
void add(int u,int v,int w){
d[++sum].next=head[u];
d[sum].to=v;
d[sum].h=w;
head[u]=sum;
}
queue<int> q;
int main(){
cin>>n>>m>>c;
for(int i=1;i<=n;i++){
cin>>s[i];
}
for(int i=1;i<=c;i++){
int a,b,x;
cin>>a>>b>>x;
in[b]++;
add(a,b,x);
}
for(int i=1;i<=n;i++){
if(in[i]==0){
q.push(i);
}
}
while(q.empty()){
int k=q.front();
q.pop();
for(int i=head[k];i;i=d[i].next){
int s=d[i].to;
ans[s]=max(ans[s],ans[k]+d[i].h);
in[s]--;
if(in[s]==0){
q.push(s);
}
}
}
for(int i=1;i<=n;i++){
cout<<ans[i]<<endl;
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...