求助,本地正确,提交RE
查看原帖
求助,本地正确,提交RE
151647
sycqwq楼主2021/5/30 15:54

rt

下了数据输出是对的

就是re

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int inf=1ll<<63;
int n,m,s,t;
struct node
{
	int v,w,nxt;
}e[100005];
int tot=1;
int head[100005];
int add(int u,int v,int w)
{
	e[++tot].v=v;
	e[tot].w=w;
	e[tot].nxt=head[u];
	head[u]=tot;
}	
int mi[10005],q[10005],bk[10005];
int bfs()
{
	memset(bk,0,sizeof bk);
	queue<int> qq;
	qq.push(s);
	bk[s]=1;
	mi[t]=inf;
	while(!qq.empty())
	{
//	cout<<1<<endl;
		int x=qq.front();
		qq.pop();
		for(int i=head[x];i;i=e[i].nxt)
		{
			if(e[i].w<=0)
				continue;
			if(bk[e[i].v])
				continue;
			mi[e[i].v]=min(e[i].w,x);
			q[e[i].v]=i;
			if(e[i].v==t)
				return 1;
			bk[e[i].v]=1;
			qq.push(e[i].v);
		}
	}
	return 0;
}
signed main(){
	cin>>n>>m>>s>>t;
	for(int i=1;i<=m;i++)
	{
		int x,y,w;
		cin>>x>>y>>w;
		add(x,y,w);
		add(y,x,0);
	}
	int ans=0;
	while(1)
	{
//			cout<<1<<endl;
		if(!bfs())
			break;
		int x=t;
		while(x!=s)
		{
			int v=q[x];
			e[v].w-=mi[t];
			e[v^1].w+=mi[t];
			x=e[v^1].v; 	
//			getchar();
		}
//		cout<<"###############"<<endl;
		ans+=mi[t];
	}
	cout<<ans;
	return 0;
}
2021/5/30 15:54
加载中...