这篇博客讲得很好

#include<queue>
#include<stdio.h>
#include<string.h>
using namespace std;
const int MAXN=205;
const int INF=0x3f3f3f3f;
int r[MAXN][MAXN];
bool vis[MAXN];
int pre[MAXN];
int m,n;
bool bfs(int s,int t)
{
int p;
memset(pre,-1,sizeof(pre));
memset(vis,false,sizeof(vis));
queue<int>q;
pre[s]=s;//存储路径,即增广路。
vis[s]=true;
q.push(s);
while(!q.empty())
{
p=q.front();
q.pop();
for(int i=1;i<=n;i++)
{
if(!vis[i]&&r[p][i]>0)//结点是否访问过,以及该边否有剩余流量。
{
vis[i]=true;
pre[i]=p;//i结点的上一个结点
if(i==t)
return true;
q.push(i);
}
}
}
return false;
}
int EK(int s,int t)
{
int flow=0,d;
while(bfs(s,t))
{
d=INF;
for(int i=t;i!=s;i=pre[i])
d=d<r[pre[i]][i]?d:r[pre[i]][i];//找到该路径上容量最小的边。
for(int i=t;i!=s;i=pre[i])
{
r[pre[i]][i]-=d;//减去正向的容量,
r[i][pre[i]]+=d;//在负向上加上流量,
}
flow+=d;
}
return flow;
}
int main()
{
while(scanf("%d%d",&m,&n)!=EOF)
{
int s,e,c;//s->e,容量为c;
memset(r,0,sizeof(r));
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&s,&e,&c);
r[s][e]+=c;
}
printf("%d\n",EK(1,n));
} return 0;
}

网络流 EK算法模板。的更多相关文章

  1. 网络流EK算法模板

    \(EK\)算法的思想就是每一次找一条增广路进行增广. 注意几个点: 存图时\(head\)数组要设为\(-1\). 存图的代码是这样的: inline void add(int u, int v, ...

  2. Drainage Ditches(网络流(EK算法))

    计算最大流,EK算法模板题. #include <stdio.h> #include <string.h> #include <queue> using names ...

  3. 网络流EdmondsKarp算法模板理解

    先推荐一个讲网络流的博客,我的网络流知识均吸收于此   传送门 EdmondsKarp算法基本思想:从起点到终点进行bfs,只要存在路,说明存在增广路径,则取这部分路 权值最小的一部分,即为增广路径( ...

  4. POJ 1459 网络流 EK算法

    题意: 2 1 1 2 (0,1)20 (1,0)10 (0)15 (1)20 2 1 1 2 表示 共有2个节点,生产能量的点1个,消耗能量的点1个, 传递能量的通道2条:(0,1)20 (1,0) ...

  5. EK算法模板

    #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> ...

  6. 最大网络流 EK 算法

    网络流是什么类型的问题,看一道题目你就知道了 点击打开链接 . 默认具备图论的基本知识,网络流概念比较多,先看看书熟悉一下那些概念.比较好!一个寄出的网络最大流.EK算法写的. 这是一幅网络,求S   ...

  7. 最大流的EK算法模板

    模板题:洛谷p3376 题目大意: 给出一个网络图,以及其源点和汇点,求出其网络最大流. 基本思路: 套模板 EK的时间复杂度O(V*E^2) EK算法思路: 1.通过BFS拓展合法节点(每个节点在本 ...

  8. HDU1532 Drainage Ditches 网络流EK算法

    Drainage Ditches Problem Description Every time it rains on Farmer John's fields, a pond forms over ...

  9. POJ 1273 Drainage Ditches(网络流dinic算法模板)

    POJ 1273给出M条边,N个点,求源点1到汇点N的最大流量. 本文主要就是附上dinic的模板,供以后参考. #include <iostream> #include <stdi ...

随机推荐

  1. MySQL中有关TIMESTAMP和DATETIME的对比

    TIMESTAMP和DATETIME的相同点: 1> 两者都可用来表示YYYY-MM-DD HH:MM:SS[.fraction]类型的日期. TIMESTAMP和DATETIME的不同点: 1 ...

  2. &&运算符和||运算符的优先级问题 专题

    public class SyntaxTest { @Test public void test() { System.out.println(true || true && fals ...

  3. vscode 插件todo-highlight

    简介 Highlight TODO,FIXME or any annotations within your code. 资源 https://marketplace.visualstudio.com ...

  4. 邓俊辉数据结构学习-8-2-B树

    B树 概述 动机: B树实现高速I/O 640K如何"满足"任何实际需求了-- 源自比尔·盖茨的一个笑话 前提知识 高速缓存 为什么高速缓存有效? 不同容量的存储器,访问速度差异悬 ...

  5. [Freemarker] Getting Start

    Freemarker是一个模板引擎,在.NET中有类似的T4模板,FreeMarker对ASP.NET MVC也很友好,链接地址,引用官方的一幅图 模板+数据=视图 Following are the ...

  6. C 碎片五 数组

    构造类型数据是有基本类型数据按照一定规则组成的.数组,结构体,共用体都属于构造类型的数据.数组是有序数据的集合,C语言数组中的每一个元素都属于同一个数据类型,用数组名和下标来唯一确定数组中的元素. 一 ...

  7. 生产消费者模式与python+redis实例运用(基础篇)

    根据这个图,我们举个简单的例子:假如你去某个餐厅吃饭,点了很多菜,厨师要一个一个菜的做,一个厨师不可能同时做出所有你点的菜,于是你有两个选择:第一个,厨师把所有菜都上齐了,你才开始吃:还有一个选择,做 ...

  8. java8 peek

    这样不会有任何的输出:Stream.of("one", "two", "three", "four").peek(e - ...

  9. oracle数据库,表被锁,如何解锁?

    4.批量解锁declare cursor mycur isselect b.sid,b.serial# from v$locked_object a,v$session bwhere a.sessio ...

  10. Python开发第三篇

    函数 一.函数参数传值 形参:函数在定义的时候给定的参数 实参:函数在运行时赋给的参数: def func(i):#i为定义时的参数,为形参 pass func(name)#name为运行时的参数,为 ...