蒟蒻求助
查看原帖
蒟蒻求助
235233
Pete楼主2020/10/23 14:30

找了1个多小时的错都没找到,求大佬帮忙找错

菜鸡的提交记录

#include<bits/stdc++.h>
using namespace std;
const long long MAXN=1e10;
long long n,m,s,t,x,y,z,cnt,ans;
bool book[201];
long long dis[201];
long long first[201],next[10001],to[10001],w[10001],now[10001];
void add(long long x,long long y,long long z){
	cnt++;next[cnt]=first[x];first[x]=cnt;to[cnt]=y;w[cnt]=z;
}
inline int dfs(long long k,long long exp){
	if(k==t) return exp;
	long long out=0;
	long long v;
	for(long long i=now[k];i&&exp;i=next[i]){
		v=to[i];
		now[k]=i;
		if((dis[v]==dis[k]+1)&&w[i]){
			long long ll=dfs(v,min(exp,w[i]));
				w[i]-=ll;
				w[i^1]+=ll;
				exp-=ll;
				out+=ll;	
				
		}
	}
	return out;
}
inline bool bfs(){
	queue<int> q;
	for(long long i=1;i<=n;i++)
		dis[i]=MAXN;	
	q.push(s);
	dis[s]=0;
	now[s]=first[s];
	while(!q.empty()){
		for(long long i=first[q.front()];i;i=next[i]){
			long long v=to[i];
			if(w[i]&&dis[v]==MAXN){
				dis[v]=dis[q.front()]+1;
				q.push(v);
				now[v]=first[v];
				if(v==t) return 1;
			}
		}
		q.pop();
	}
	return 0;
}
int main(){
	scanf("%lld%lld%lld%lld",&n,&m,&s,&t);
	while(m--){
		scanf("%lld%lld%lld",&x,&y,&z);
		add(x,y,z);
		add(y,x,0);
	}
	while(bfs()){
		ans+=dfs(s,MAXN);
	}
	cout<<ans<<endl;
}
2020/10/23 14:30
加载中...