计蒜客 排涝 网络流 增广路算法

本文介绍了一道计蒜客上的网络流题目,要求根据已知边的最大流量找出从源点到汇点的最大流量。文章重点阐述了增广路算法,包括使用BFS寻找可达路径、调整路径容量以最大化流量,并通过迭代直至无法找到增广路径。最后,总结所有能到达汇点的流量之和即为答案。建议读者参考《算法竞赛入门经典》并自行模拟实现。
摘要由CSDN通过智能技术生成

题目链接:https://nanti.jisuanke.com/t/36

一道正经的网络流题,给了你边以及最大流量,求从能到汇点的最大流量

容量:一条边最大容量

流量:一条边实际流过的量

增广路算法:

1.BFS找到一条能够到达汇点的路

2.给这条路增加容量,达到能最大能容纳的流量,这一条路的每一段 容量 = 初始流量 - 流量

3.如果还有路继续1,否则到4

4,将所有能到汇点流量求和

可以参考《算法竞赛入门经典》,自己模拟一下,很容易的。

题目代码

#include<bits/stdc++.h>
using namespace std;
#define INF 999999999
const int maxn = 205;
struct Edge{
	int from,to,cap,flow;	//容量  流量
	Edge(int u,int v,int c,int f):from(u),to(v),cap(c),flow(f){}
};

struct EdmondsKarp{
	int n,m;
	vector<Edge> edges;        
	vector<int> G[maxn];
	int a[maxn];
	int p[maxn];
	
	void init(int n){
		for(int i=0;i<n;i++) G[i].clear();
		edges.clear();
	}
	
	void AddEdge(int from,int to,int cap){
		edges.push_back(Edge(from,to,cap,0)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值