想不出来标题……
ABC 373 D AC+RE+WA
如果能解决 RE 也行,玄关
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
int edge_cnt=0;
int ans[200010];
int head[200010];//从第 i 个顶点出发的上一条边
bool vis[200010];
struct edge{
int to,dis,nxt;
}e[200010];
void add_edge(int a,int b,int c){
edge_cnt++;
e[edge_cnt].nxt=head[a];
head[a]=edge_cnt;
e[edge_cnt].to=b;
e[edge_cnt].dis=c;
//cout<<b<<"-"<<a<<"="<<c<<endl;
}
void dfs(int s,int pre,int d){
//cout<<s<<endl;
ans[s]=ans[pre]+d;
if(pre==-1){
ans[s]=0;
}
vis[s]=true;
for(int i=head[s];i!=0;i=e[i].nxt){
//cout<<i<<endl;
if(!vis[e[i].to]&&e[i].to<=n){
dfs(e[i].to,s,e[i].dis);
}
}
return ;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int a,b,c;
cin>>a>>b>>c;
add_edge(a,b,c);
add_edge(b,a,-c);
}
for(int i=1;i<=n;i++){
if(!vis[i]){
dfs(i,-1,0);
}
}
for(int i=1;i<=n;i++){
cout<<ans[i]<<" ";
}
return 0;
}