萌新求助EK
查看原帖
萌新求助EK
128273
Rolling_L楼主2021/7/8 10:41

RT

不知道为什么在图的规模较大时会WA,与网上同类型代码对比无果。

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,s,t;
int g[205][205];
queue<int> q;
bool vis[205];
int pre[205];
int bfs(){
	memset(vis,0,sizeof(vis));
	memset(pre,0,sizeof(pre));
	while(q.size()){
		q.pop();
	}
	q.push(s);
	vis[s]=1;
	int res=0x3f3f3f3f;
	while(q.size()){
		int u=q.front();
		q.pop();
		if(u==t)break;
		for(int i=1;i<=n;i++){
			int v=i;
			if(!vis[v]&&g[u][v]>0&&u!=v){
				res=min(g[u][v],res);
				pre[v]=u;
				vis[v]=1;
				q.push(v);
			}
		}
	}
	if(pre[t]){
		return res;
	}else{
		return 0;
	}
}
void renew(int u,int w){
	while(u!=s&&pre[u]){
		g[u][pre[u]]+=w;
		g[pre[u]][u]-=w;
		u=pre[u];
	}
}
int EK(){
	int now=0,res=0;
	do{
		now=bfs();
		renew(t,now);
		res+=now;
	}while(now);
	return res;
}

signed main(){
	cin>>n>>m>>s>>t;
	for(int i=1;i<=m;i++){
		int u,v,w;
		cin>>u>>v>>w;
		g[u][v]=w;
	}
	cout<<EK();
	return 0;
}
2021/7/8 10:41
加载中...