网络流-Dinic求最大流

2021.8.18

原理:网络流-EK求最大流

在Dinic求最大流中,d数组变成了步数的记录,pre数组变成了对其上一条路径的记录。

bool bfs() {queue<int>q;memset(d, -1, sizeof d);q.emplace(s), d[s] = 0, pre[s] = head[s];while (!q.empty()) {int t = q.front(); q.pop();for (int i = head[t]; ~i; i = nexte[i]) {int k = to[i];if (d[k] == -1 && wei[i]) {d[k] = d[t] + 1;pre[k] = head[k];if (T == k)return true;q.emplace(k);}}}return false;
}

每找到一条可行的路时,会通过find函数找到这条路上的最大可行流,并将其流量去除并建立退流的渠道。

int dinic() {int res = 0, ans;while (bfs()) {while (ans = find_t(s, INF))res += ans;}return res;
}

其中的find_t函数为

int find_t(int u, int limit) {if (u == T)return limit;int ans = 0;for (int i = pre[u]; ~i && ans < limit; i = nexte[i]) {pre[u] = i;//优化当前弧int k = to[i];if (d[k] == d[u] + 1 && wei[i]) {int t = find_t(k, min(wei[i], limit - ans));if (!t)d[k] = -1;wei[i] -= t, wei[i ^ 1] += t, ans += t;}}return ans;
}

这个函数中,先找到当前点的下一节点,若其是当前节点的下一步,则对其流量进行修改,限制到其本身最大流量与剩余流量,待从源点到汇点所有的可行路都走过之后,返回其能到汇点的最大流量。

多次查询,保证当前的路径上所有可行流都能在满足限制的条件下使用最多。

网络流-Dinic求最大流(仅做自己复习,写的很不清楚)相关推荐

  1. 网络流-EK求最大流

    网络流-EK求最大流 2021.8.17 网络流最大流解决什么问题? 网络流(network-flows)是一种类比水流的解决问题方法(摘自百度百科),最大流是求源点到汇点最大流量的方法. 算法原理 ...

  2. Dinic求最大流/最小割

    o(v^2*E) 建图时建一条流量为0的反向边,正向边每减去流量f,反向边增加流量f.对于无向图当做两条边. cap:每条边最大流量 建图后: 调用DINIC():用bfs()为每个节点进行层次编号, ...

  3. 【模板】EK求最大流、dinic求最大流

    ACM模板 目录 概念 EK算法 Dinic算法 概念 yxc老师的部分总结 基本概念 1.1 流网络,不考虑反向边 1.2 可行流,不考虑反向边 1.2.1 两个条件:容量限制.流量守恒 1.2.2 ...

  4. 洛谷 P2765 魔术球问题 (dinic求最大流,最小边覆盖)

    P2765 魔术球问题 题目描述 «问题描述: 假设有n根柱子,现要按下述规则在这n根柱子中依次放入编号为1,2,3,...的球. (1)每次只能在某根柱子的最上面放球. (2)在同一根柱子中,任何2 ...

  5. 网络流问题:最大流及其算法

    一.概念引入 首先要先清楚最大流的含义,就是说从源点到经过的所有路径的最终到达汇点的所有流量和. 流网络G=(V,E)是一个有向图,其中每条边(u,v)∈E均有一个非负容量c(u,v)>=0.如 ...

  6. dinic (最大流) 算法 讲解

    网络流入门-用于最大流的Dinic算法 转自:http://comzyh.tk/blog/archives/568/ "网络流博大精深"-sideman语 一个基本的网络流问题 感 ...

  7. Uvaoj 11248 Frequency Hopping(Dinic求最小割)

    题意:1到n节点(节点之间有一定的容量),需要流过C的流量,问是否可以?如果可以输出possible, 否则如果可以扩大任意一条边的容量 可以达到目的,那么输出possible option:接着输出 ...

  8. 「学习笔记」ISAP求最大流

    ISAP学习笔记 ISAP是OI中求最大流的常用方法之一.相对于Dinic,ISAP的速度提升了很多,但编码复杂度也上升了不少. 约定 采用邻接表存储图,对于每条弧,增加一条容量为0的逆向边. d数组 ...

  9. 网络流--最小费用最大流 (理解)

    1.什么是最小费用最大流问题 上篇文章我们讲解了最大流问题,那什么是最小费用最大流呢?听名字就可以看出,我们要在满足最大流的同时找到达成最大流的最小费用. 对于一个网络流,最大流是一定的,但是组成最大 ...

最新文章

  1. 存储方式与介质对性能的影响
  2. 技术大佬的肺腑之言:“不要为了 AI 而 AI”! | 刷新 CTO
  3. JGG :微生物所王军-综述固有免疫细胞在胃肠道疾病中研究进展
  4. Java-JPA:JPA
  5. MongoDB数据库的下载与Python交互
  6. 十年软件开发经验小结
  7. python零基础教学plc_Python从基础到开发精修全面学习视频教程
  8. God.org单域环境攻略(二)
  9. Java发送SMS短信
  10. 人工智能是怎么用在人脸识别上的?
  11. 树莓派hc+sr501+c语言,树莓派连接人体红外感应模块HC-SR501
  12. MXNet对DenseNet(稠密连接网络)的实现
  13. python3 爬煎蛋ooxx妹子图
  14. RPA场景案例〡赋能“人力资源”,工作效率一键提升数倍
  15. 按键短按长按连发双击
  16. 使用IPV6外网访问的配置方法
  17. 十进制转二进制和十六进制 条件码标志和乘法指令
  18. 光通信器件与系统(西交大朱京平笔记) -8-4 光栅光纤型波分复用器
  19. 51单片机2位数简易计算器C语言实现
  20. 无线通信网络之TD网络架构

热门文章

  1. 探索Julia(part14)--学生得分描述性统计案例
  2. 京东8.27算法笔试-滚雪球(动态规划python)
  3. 数据结构-常用的查找算法
  4. 发现 postman 自动生成接口调用代码的一个问题
  5. SAP Fiori Elements 公开课第二单元学习笔记:Fiori Elements 架构
  6. Angular jasmine单元测试框架fixture.detectChanges的实现原理
  7. SAP Hybris install.bat工作原理分析
  8. SAP云平台上部署应用时遇到disk quota不够的问题
  9. 关于用Restful API下载网易云笔记时遇到的图片外链不能打开的问题
  10. OPA 6 - module(Create Button Test);