最后一问WA是什么情况?
查看原帖
最后一问WA是什么情况?
482198
Surigae楼主2022/2/13 12:03
// #include<bits/stdc++.h>
#include<iostream>
#include<queue>
using namespace std;
#define int long long
int n,m,s,t,a[5005][5005],dep[5005];
queue<int> q;
bool bfs(){
	memset(dep,0,sizeof(dep));
	dep[s] = 1;
	q.push(s);
	while(!q.empty()){
		int u=q.front();
		for(int i=1;i<=n;i++)
			if(a[u][i]>0 && dep[i]==0){
                dep[i] = dep[u]+1;
				q.push(i);
			}
		q.pop();
	}
	return dep[t]!=0;
}
int dfs(int x,int flow){
	if(x==t)
		return flow;
	for(int i=1;i<=n;i++)
		if(a[x][i]>0 && dep[i]==dep[x]+1){
			int d=dfs(i,min(flow,a[x][i]));
			if(d>0){
				a[x][i] -= d;
				a[i][x] += d;
				return d;
			}
		}
	return 0;
}
int maxflow(){
	int ans=0;
	while(bfs()){
		int x=1;
		while(x!=0){
			x = dfs(s,0x3f3f3f3f);
			ans += x;
		}
	}
	return ans;
}
signed main(){
	cin>>n>>m;
    s=1,t=m;
	for(int i=1,x,y,z;i<=n;cin>>x>>y>>z,a[x][y]+=z,i++);
	cout<<maxflow()<<endl;
	return 0;
}
2022/2/13 12:03
加载中...