网络流最大流Edmonds-Karp算法(模板)
最大流算法的Edmonds-Karp算法,实际用的不多因为复杂度比Dinic高,把流初始化为零流,Maxflow返回最大流的值,同时在算法结束时所有已标号结点(a[u]>0的结点)构成集合S,剩余结点构成集合T,则(S,T)是图的最小割
#include<bits/stdc++.h>
using namespace std;
const int maxn=10050;
const int inf=2e9;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];//邻接表,g[i][j]表示结点i的第j条边在e数组中的序号int a[maxn]; //当起点到i的可改进量int p[maxn]; //最短路树上p的入弧编号void init(int n){this->n=n;for(int i=0;i<n;++i) g[i].clear();edges.clear();}void add(int from,int to,int cap){edges.push_back(Edge(from,to,cap,0));edges.push_back(Edge(to,from,0,0));m=edges.size();g[from].push_back(m-2);g[to].push_back(m-1);}int Maxflow(int s,int t){int flow=0;while(1){memset(a,0,sizeof(a));queue<int> que;que.push(s);a[s]=inf;while(!que.empty()){int x=que.front();que.pop();for(int i=0;i<g[x].size();++i){Edge& e=edges[g[x][i]];if(!a[e.to] && e.cap>e.flow){p[e.to]=g[x][i];a[e.to]=min(a[x],e.cap-e.flow);que.push(e.to);}}if(a[t]) break;}if(!a[t]) break;for(int u=t;u!=s;u=edges[p[u]].from){edges[p[u]].flow+=a[t];edges[p[u]^1].flow-=a[t];}flow+=a[t];}return flow;}
};
转载于:https://www.cnblogs.com/wafish/p/10465275.html
网络流最大流Edmonds-Karp算法(模板)相关推荐
- 最大流(网络流基础概念+三个算法)
下面是由一道题引发的一系列故事... 题目链接 http://poj.org/problem?id=1273 Drainage Ditches Time Limit: 1000MS Memory Li ...
- (通俗易懂小白入门)网络流最大流——EK算法
网络流 网络流是模仿水流解决生活中类似问题的一种方法策略,来看这么一个问题,有一个自来水厂S,它要向目标T提供水量,从S出发有不确定数量和方向的水管,它可能直接到达T或者经过更多的节点的中转,目前确定 ...
- 网络流入门——算法模板,习题和解析
最近一段时间再搞网络流,今天终于搞完了!!!!QAQ,好累呀. 首先是关于网络流的基础知识,这部分东西有点多,就不在这里说了,给几个有用的资源. 先推荐一下建图的博客:链式向前星,静态链表和邻接矩阵建 ...
- 最大流ISAP算法模板
这两天学习了最大流,下面是ISAP算法模板: const int inf = 0x3fffffff; template <int N, int M> struct Isap {int to ...
- 网络流初步:最大流(Dinic算法)
网络流初步:最大流 标签: 网络流 最大流 Dinic 最大流 例题 POJ****(USACO4.2.1) 在农夫约翰的农场上,每逢下雨,Bessie最喜欢的三叶草地就积聚了一潭水.这意味着草地被水 ...
- 最大流算法模板:EK和dinic算法
最大流算法模板:EK和dinic算法 一.EK算法模板 #include<iostream> #include<queue> using namespace std; cons ...
- 网络流——最大流EK算法讲解
网络流--最大流EK算法讲解 好了,这是第二篇博客了,如第一篇所述,来讲一讲刚刚理解的网络流.因为本人只会EK算法,所以先讲这个算法.(我会去补知识点的!!!) 什么是网络流??? 读者们刚接触这个知 ...
- jiedai算法模板合集(正在肝2021.8.15)
文章目录 基础模板 常用板子 数学题常用板子 输出挂 fread快读 高精度 分数类 打表压缩 基数排序 杂项 数据结构 树状数组 一维树状数组 二维树状数组 线段树 主席树 线段树合并/裂开 吉司机 ...
- 网络流 最大流 最小割 费用流
[腾讯文档]网络流初步 网络流初步 文章目录 网络流初步 一.网络流简介 1. 网络 2. 流 3. 再次理解网络流 二.常见题型(三种) 三.相关问题对应算法介绍 1.最大流 (1) FF算法 - ...
- [Poj 1459] 网络流(一) {基本概念与算法}
{ 凸包的内容还欠整理 先来侃侃一个月以前就想写写的网络流 本文介绍网络流 网络流的算法 及其应用 这些问题没事想想还是很有意思的 } ================================ ...
最新文章
- 多视图立体匹配论文分享:P-MVSNet
- CSS3的background-size:可以设置高宽 百分比 最大大小 最小大小
- stcisp一直检测单片机_三种方法对比:STC51单片机实现免冷启动
- Elasticsearch 的一些关键概念
- C语言正函数nosign,Function declarations(函数声明)
- Bootstrap-学习系列
- 详细分析 Chrome V8 JIT 漏洞 CVE-2021-21220
- Python 导入requests报错No module named requests
- java 19 -2 异常以及tr...catch()的方法处理异常
- 小学多媒体计算机室管理计划,多媒体教室管理工作计划5篇
- linux运行j2me,Linux下用Eclipse搭建J2me开发环境过程
- 如何把pdf分割成多个?怎么把pdf文件分成多个?
- 在imitate中遇到的问题
- Word查找替换详细用法及通配符一览表
- Tomcat开启APR模式并设置Tomcat为开机自启动服务
- 打造最强终端之一:Fish shell简明教程
- ImportError: cannot import name ‘etree‘ from ‘lxml‘ 爬虫报错
- Spring Boot教程十六:SpringBoot注入类实现多线程
- 专业函数画图软件Origin
- 爱快安装或重置后,PC或手机端获取不到ip