题目链接: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)