• 板块灌水区
  • 楼主__Q_w_Q__
  • 当前回复6
  • 已保存回复6
  • 发布时间2024/9/30 16:22
  • 上次更新2024/9/30 19:28:33
查看原帖
933380
__Q_w_Q__楼主2024/9/30 16:22

想不出来标题……

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;
} 
2024/9/30 16:22
加载中...