Edmonds-Karp算法
基础的最大流算法,每次Bfs寻找最短路进行增广,这时候的增广和匈牙利算法的增广不同,找出一条残余路径就可以了。
然后对残余网络进行增广,不要忘记正向增广,相当于负向减少,也要在图中保存记录。
最后求一个割集来得到最大流。
最大流模型:
点:对点来说要求是进多少出多少
边:对边要求是不能超过最大容量,所以c的值为所有的残余边中的最小值
效率
O(VE2),效率可以满足一般题目要求。
模板如下;图保存为邻接阵
- typedef int Graph[200][200];
- typedef int Path[200];
- Graph map,flow;
- int n,s,t;
- int EK()
- {
- int i, j, k=0, c, head, tail; Graph R;
- Path prev, visit, Q;
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- flow[i][j] = 0;
- R[i][j] = map[i][j];
- }
- }
- while (true) {
- head = tail = 0;
- memset(visit, false, sizeof(visit));
- Q[tail++] = s;
- prev[s] = -1;
- visit[s] = 1;
- while (head < tail) {
- k = Q[head++];
- for (i = 0; i < n; i++)
- {
- if (!visit[i] & R[k][i] > 0)
- {
- visit[i] = 1;
- prev[i] = k;
- if (i == t) break;
- if(tail>=0) Q[tail++] = i;
- }
- }
- if(i==t) break;
- }
- if (!visit[t]) break;
- c = 1000000;
- j = t;
- while (j != s) {
- i = prev[j];
- if(c>R[i][j]) c=R[i][j];
- j = i;
- }
- j = t;
- while (j != s) {
- i = prev[j];
- flow[i][j] = flow[i][j] + c;
- flow[j][i] = -flow[i][j];
- R[i][j] = map[i][j] - flow[i][j];
- R[j][i] = map[j][i] - flow[j][i];
- j = i;
- }
- }
- c = 0;
- for (i = 0; i < n; i++) {
- c += flow[s][i];
- }
- return c;
- }
Edmonds-Karp算法相关推荐
- C++Rabin Karp算法字符串快速查找(附完整源码)
C++Rabin Karp算法字符串快速查找 C++Rabin Karp算法字符串快速查找完整源码(定义,实现,main函数测试) C++Rabin Karp算法字符串快速查找完整源码(定义,实现,m ...
- Rabin Karp 算法详解及Python实现
目录 一.Rabin Karp 核心思路 二.字符串如何做哈希映射 三.借助前缀和列表计算滑动窗口 四.leetcode28. 代码实现 Rabin Karp 算法是用于实现字符串的模式匹配,先看le ...
- leetcode 1044. Longest Duplicate Substring | 1044. 最长重复子串(Rabin Karp算法)
题目 https://leetcode.com/problems/longest-duplicate-substring/ 题解 这题暴力超时,看了 Related Topics,以及 Hint,主要 ...
- 算法艺术——网络最大流
女强人:http://blog.csdn.net/abcjennifer/article/details/5556455 USACO 4.2.1 Ditch 网络最大流问题算法小结 通过 USACO ...
- ICPC-图论知识与算法要览
1.图定义(Definitions in graph theory) 1)图(Graph) 2)有向图(Directed graph) 3)图数据表示 邻接矩阵(Adjacency Matrix),邻 ...
- 10种算法一文打尽!基本图表算法的视觉化阐释
图源:unsplash 来源:读芯术 在社交媒体网络.网页和链接.GPS中位置和路线等真实场景中,图表已成为一种强大的建模和捕获数据手段,如果一组对象相互关联,则可以用图表来表示. 本文就将简要解释1 ...
- 算法导论 CLRS 第26章 最大流 Maximum flow C#
2021/11/26 第六部分 图算法 第22章 基本的图算法 图数据结构设计 出度.入度和度 有向图 出度≠入度 先初始化出度,再初始化入度,u.入度=u.AdjList.length-u.out_ ...
- 增广路算法 (最大流问题)
Edmonds-Karp算法: 计算机科学中, Edmonds–Karp算法通过实现Ford–Fulkerson算法来计算网络中的最大流,其时间复杂度为O(V E2). 该算法由Yefim (Chai ...
- 数据结构与算法学习笔记15:最大流问题 / 二分图 / 有权无权二分图的匹配 / 匈牙利算法 / 银行家算法 / 稳定婚配
数据结构与算法学习笔记15:最大流问题 / 二分图 / 有权无权二分图的匹配 / 匈牙利算法 / 银行家算法 / 稳定婚配 引入小题:最短路径 最大流问题(maximum flow problem) ...
- Python小白的数学建模课-19.网络流优化问题
流在生活中十分常见,例如交通系统中的人流.车流.物流,供水管网中的水流,金融系统中的现金流,网络中的信息流.网络流优化问题是基本的网络优化问题,应用非常广泛. 网络流优化问题最重要的指标是边的成本和容 ...
最新文章
- JS 截取字符串及字符与数字转换
- DBoW2 cmake代码注释
- ASP.NET高质量生成缩略图
- 辽宁交通职业技术学校计算机好不好,辽宁省交通高等专科学校信息工程系
- 回归指令_用一条指令在新款 Mac 上找回经典的开机启动声
- 用HTML+CSS画出一个同心圆
- mysql5.7 至少需要1560,mysq5.7.28配置innodb_page_size错误引起的错误1071(42000)
- L1-030 一帮一 (15 分)
- CSS 控件适配器的菜单样式解释
- 使用 Eclipse 平台进行调试
- python 写入excel 效率_python各种excel写入方式的速度对比
- Apache 安装与配置
- Java基础03:数据类型讲解
- 从最近一次的计算机攻击中,我们学到的经验教训
- excel服务器文件只读,excel只读服务器
- 安卓模拟器的使用--皇室战争免费快速成长之路
- linux脚本出错仍执行后续脚本,crontab执行脚本出错
- Python调用Unit闲聊对话API的应用
- 程序员小灰2017-2019年原创汇总
- 云南省自然保护区分布及功能区划
热门文章
- 使用Idea搭建Spring Boot环境
- 洛谷 P2473 [SCOI2008]奖励关 解题报告
- 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0...
- java之StringBuffer
- JavaScript学习笔记(八)
- 2018.09.23 bzoj1076: [SCOI2008]奖励关(期望+状压dp)
- 5分钟正则表达式,了解一下!
- rutime 理解
- angularjs指令参数transclude
- EF CodeFirst类生成器