图论-网络流③-最大流②
上一篇:图论-网络流②-最大流①
下一篇:图论-网络流④-最大流解题①
参考文献:
- https://www.cnblogs.com/DuskOB/p/11216861.html
- https://blog.csdn.net/yjr3426619/article/details/82808303
- https://blog.csdn.net/lym940928/article/details/90209172
- https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E6%B5%81/2987528?fr=aladdin
- https://www.cnblogs.com/pk28/p/8039645.html
- https://blog.csdn.net/disgustinglemon/article/details/51296636
大纲
- 什么是网络流
- 最大流(最小割)
- D i n i c Dinic Dinic (常用)
- E K EK EK Start \color{#33cc00}\texttt{Start} Start
- S a p Sap Sap
- F o r d − F u l k e r s o n Ford-Fulkerson Ford−Fulkerson(不讲)
- H L P P HLPP HLPP (快) End \color{red}\texttt{End} End
- 最大流解题
- 费用流
- E K EK EK 费用流
- D i n i c Dinic Dinic 费用流
- z k w zkw zkw 费用流
费用流解题
有上下界的网络流
- 无源汇上下界可行流
- 有源汇上下界可行流
- 有源汇上下界最大流
- 有源汇上下界最小流
- 最大权闭合子图
- 有上下界的网络流解题
上一篇中讲了最大流定义、最小割定理以及 D i n i c Dinic Dinic算法,这篇中会讲剩下三种最大流算法: E K EK EK, S A P SAP SAP和 H L P P HLPP HLPP。
EK
E K EK EK 的全称叫 E d m o n d s − K a r p Edmonds-Karp Edmonds−Karp。是一个与 D i n i c Dinic Dinic 相比代码较短,跑得较慢的算法。
E K EK EK 就是简单地暴力搜索整个网络流图。在每次搜索增广路的时候,都采取 B f s Bfs Bfs 的策略,将所有的从源点到汇点的路径都找出来,那么如果有增广路,就一定可以将它找出来。因此采用 B f s Bfs Bfs 策略首先是正确的,代码:
#include<bits/stdc++.h>
using namespace std;
const int N=210;
const int inf=0x3f3f3f3f;
int n,m,s,t;
int fw[N][N],pre[N]; //残留网络,初始化为原图
bool vis[N];
queue<int> q;
bool bfs(int s,int t){
//寻找一条从s到t的增广路,若找到返回true
memset(pre,0,sizeof pre);
memset(vis,0,sizeof vis);
while(q.size()) q.pop();
q.push