【网络流】最大流问题(EK算法带模板,Dinic算法带模板及弧优化,ISAP算法带模板及弧优化)上下界网络流
本blog重点是代码
- 网络流的相关概念
- 流网络(flow network)
- 流(flow)
- 网络的流
- 残留网络(residual network)
- 增广路径(augmenting path)
- Edmonds-Karp
- 算法思想
- bfs模板
- 调用EK&更新残留网络流模板
- luogu的AC代码(EK版)
- Dinic
- 算法思路
- 时间复杂度证明
- bfs模板
- 模板1
- 模板2
- dfs模板
- 不带弧优化模板(最好别用)
- 带弧优化模板
- 不带弧优化版AC代码
- 带弧优化AC代码
- ISAP
- 算法思想
- bfs模板
- dfs模板
- 不带弧优化
- 带弧优化
- 不带弧优化版AC代码
- 带弧优化版AC代码
- Update(仅模板)
- 无源汇有上下界可行流
- 有源汇有上下界最大流
- 有源汇有上下界最小流
综合了自己在网上看到的众多博客,多种多样,肯定有很多问题,欢迎各位Dalao指出
网络流的相关概念
流网络(flow network)
流网络G=(V,E)G=(V, E)G=(V,E)是一个有向图,其中每条边(u,v)(u,v)(u,v)均有一非负容量c(u,v)≥0c(u, v)≥0c(u,v)≥0
流网络中有两个特殊的顶点: 源点s和汇点t
假定每个顶点都处于从源点到汇点的某条路径上,就是说,对每个顶点v,存在一条路径s→v→ts→v→ts→v→t
GGG为连通图,且∣E∣≥∣V∣−1|E| ≥|V|-1∣E∣≥∣V∣−1
流(flow)
边的流是一个实值函数f,满足下列三个性质:
容量限制:对所有u,v∈Vu,v∈Vu,v∈V, 要求f(u,v)≤c(u,v)f(u, v) ≤c(u, v)f(u,v)≤c(u,v)
理解:流量不会超过边的容量
斜对称性:对所有u,v∈Vu,v∈Vu,v∈V, 要求f(u,v)=−f(v,u)f(u, v) = -f(v, u)f(u,v)=−f(v,u)
理解:一个方向的流是其反方向流的相反数。这是完善的网络流理论
不可缺少的,像用正负数来定义物理量一样。
流守恒性:对所有u,v∈V−s,tu,v∈V-{s, t}u,v∈V−s,t,要求∑vf(u,v)−∑wf(w,u)=0\sum_vf(u,v)-\sum_wf(w,u)=0∑vf(u,v)−∑wf(w,u)=0
理解:进入点u的总流量=离开点u的总流量
每条边上斜线前的数字是流量,后的数字是容量
网络的流
网络的流定义为f=∑f(s,v)f=\sum f(s,v)f=∑f(s,v)
即,从源点s出发的总流
最大流问题就是给出一个源点和汇点的流网络,希望找到从源点到汇点的最大值流
规定f(u,v)f(u,v)f(u,v)和f(v,u)f(v,u)f(v,u)最多只有一个正数(可以均为0)。若两个均为正数,可以消减一个
方向的流量
举个栗子:u给v三个苹果,v如果又给u三个苹果,那就相当于彼此之间没有给过苹果;u给v三个苹果,v给u五个苹果,就相当于v给u两个苹果。也就是说流如果都是正数,是可以相互抵消,达成协议的
残留网络(residual network)
边的残留容量:r(u,v)=c(u,v)−f(u,v)r(u,v)=c(u,v)-f(u,v)r(u,v)=c(u,v)−f(u,v)
残留网络一句话就是残留边所构成的一个网络流,且每条边的容量是严格为正的,即当0<f(u,v)<c(u,v)=>r(u,v)=c(u,v)−f(u,v)>00<f(u,v)<c(u,v)=>r(u,v)=c(u,v)-f(u,v)>00<f(u,v)<c(u,v)=>r(u,v)=c(u,v)−f(u,v)>0,这条边(u,v)(u,v)(u,v)仍在残留网络中
【网络流】最大流问题(EK算法带模板,Dinic算法带模板及弧优化,ISAP算法带模板及弧优化)上下界网络流相关推荐
- 有上下界的网络流1-无源汇带上下界网络流SGU194
有上下界的网络流1-无源汇带上下界网络流SGU194 今天开始啃网络流了.对于求解无源汇带上下界的网络流,我们可以这样建图: 建图模型: 以前写的最大流默认的下界为0,而这里的下界却 ...
- 有上下界网络流 ---- Zoj3229 Shoot the Bullet|东方文花帖|【模板】有源汇上下界最大流
学习资料+题目链接 题目大意: 模板讲解 #include <bits/stdc++.h> #define mid ((l + r) >> 1) #define Lson rt ...
- 有上下界网络流 ---- P4843 清理雪道(DAG图上最小路径重复边覆盖)【模板】有源汇上下界最小流
题目链接 题目大意: 解题思路: 首先我们发现对于每条边至少要覆盖一次,最多覆盖无数次 那么就有点像上下界网络流了[1,INF][1,INF][1,INF]的限制关系 跑一边最小流就可以了!! #in ...
- 学习上下界网络流小记
前言 这个上下界网络流是一个以前我这个巨弱弱想都不敢想的一个东西. 然而,最近一次比赛居然考了这个东东. 于是整个机房掀起了破烂学上下界网络流的热. 那么我也来学学. 预备知识 要懂得很多很多的网络流 ...
- 【有上下界网络流】【ZOJ】2314 Reactor Cooling
[算法]有上下界网络流-无源汇(循环流) [题解]http://www.cnblogs.com/onioncyc/p/6496532.html //未提交 #include<cstdio> ...
- 上下界网络流-无源汇可行流与有源汇最大流
上下界网络流 2021.9.3 无源汇上下界可行流 之前的最大流讨论一般为有源无下届情况,那么无源汇有上下界可行流应如何求解? 首先要做的是消除下边界,应如何做?在有下届情形下,流网络中的任意一条边的 ...
- [BZOJ2502]清理雪道 有上下界网络流(最小流)
2502: 清理雪道 Time Limit: 10 Sec Memory Limit: 128 MB Description 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有 ...
- [上下界网络流][二分] Bzoj P2406 矩阵
题目描述 输入输出格式 输入格式: 第一行两个数n.m,表示矩阵的大小. 接下来n行,每行m列,描述矩阵A. 最后一行两个数L,R. 输出格式: 第一行,输出最小的答案: 输入输出样例 输入样例#1: ...
- BZOJ3698 XWW的难题(上下界网络流+gap优化的细节处理)
XWW给你一个N*N的正实数矩阵A,满足XWW性. 称一个N*N的矩阵满足XWW性当且仅当:(1)A[N][N]=0:(2)矩阵中每行的最后一个元素等于该行前N-1个数的和:(3)矩阵中每列的最后一个 ...
- HDU4411 Arrest(负边权或上下界网络流建图)
牵涉到必须经过每个点至少一次,所以拆点 把点iii拆分为iii和i+ni+ni+n iii到i+ni+ni+n可以走多次,但至少需要经过一次(代表经过这个点) 所以iii到i+ni+ni+n首先连一条 ...
最新文章
- 在express.js上启用HTTPS
- 开源的那些事儿之如何看待开源
- 进程间通讯,临界区,互斥
- Python 画樱花(动态画+飘落效果+暗色效)
- Linux常用服务部署与优化之NFS篇
- 在远程桌面在目标主机与客户机复制文件?
- $$watcher when is it filled
- 测试开发python面试_python测试开发面试之深浅拷贝
- java mysql jsp分页代码_JAVA/JSP学习系列之六(MySQL翻页例子)
- 第32月第8天 打包 Framework 时使用 CocoaPods 引入第三方库的方法
- golang 的枚举
- linux shell 常用参数 $? $# 等等解析
- ASP.NET 使用C#代码设置页面元素中的样式或属性
- win10显示nvidia控制面板的方法
- tomcat8安装及配置详细步骤(win10)
- SMOTE算法及其Python实现
- asp.net WEB 调用 CuteFTP8.0 ftpte.exe 实现大文件上传
- 纸飞机 --2013-08-08博客搬家
- 酷桌面:IPAD上体验office的炫“酷”移动办公应用
- k-选取问题之快速选取策略quickSelection