#include <iostream>
#include <queue>
#include <string.h>
#define MAX 302 using namespace std; int c[MAX][MAX];
int pre[MAX];
int visited[MAX];
int n, m; bool Path(int src, int des)
{
queue <int> q; for (int i = ; i <= m; i++)
{
visited[i] = ;
pre[i] = ;
} q.push(src);
visited[src] = ; while (!q.empty())
{
int cur = q.front();
q.pop(); for (int i = ; i <= m; i++)
{
if (!visited[i] && c[cur][i])
{
q.push(i);
pre[i] = cur;
visited[i] = ;
if (i == des)
{
return true;
break;
}
}
}
}
return false;
} int EK(int src, int des)
{
int min, i, total = ; while (true)
{
if (!Path(src, des))
{
break;
} i = des;
min = ( << );
while (i != src)
{
if (min > c[pre[i]][i])
{
min = c[pre[i]][i];
}
i = pre[i];
} i = des;
while (i != src)
{
c[pre[i]][i] -= min;
c[i][pre[i]] += min;
i = pre[i];
} total += min;
} return total;
}
int main()
{
int a, b, f;
while (cin >> n >> m)
{
memset(c, , sizeof(c));
for (int i = ; i < n; i++)
{
cin >> a >> b >> f;
c[a][b] += f;
} cout << EK(, m) << endl;
}
return ;
}

网络流的EK算法,主要就是不断的找增广路,如果找到了增广路,说明流量还可以增加,否则输出最大流即可.

找增广路用到bfs,找到后必须更新残量网络,用增广路的最大流更新残量网络.

网络流EK的更多相关文章

  1. 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) ...

  2. 初涉网络流[EK&dinic]

    主要还是板子 Edmonds-Karp 从S开始bfs,直到找到一条到达T的路径后将该路径增广,并重复这一过程. 在处理过程中,为了应对“找到的一条路径把其他路径堵塞”的情况,采用了建反向弧的方式来实 ...

  3. 最大网络流 EK 算法

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

  4. POJ1149_PIGS(网络流/EK)

    PIGS Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 15721   Accepted: 7021 Description ...

  5. 网络流EK算法模板

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

  6. HDU1532 Drainage Ditches 网络流EK算法

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

  7. 2016计蒜之道复赛 菜鸟物流的运输网络 网络流EK

    题源:https://nanti.jisuanke.com/t/11215 分析:这题是一个比较经典的网络流模型.把中间节点当做源,两端节点当做汇,对节点进行拆点,做一个流量为 22 的流即可. 吐槽 ...

  8. 网络流 ek

    hdu3549 求最大流果题 ek算法 先bfs出一条流 然后通过不断地添加增广路 得到最大流(证明在算法书上都有) 增加了一个流 就加反向边 允许程序通过走方向边的方式进行“回滚” i^1 = i+ ...

  9. POJ-3436 ACM Computer Factory(网络流EK)

    As you know, all the computers used for ACM contests must be identical, so the participants compete ...

随机推荐

  1. spring整合struts2

    1. Spring 如何在 WEB 应用中使用 ? 1). 需要额外加入的 jar 包: spring-web-4.0.0.RELEASE.jarspring-webmvc-4.0.0.RELEASE ...

  2. 驱动开发学习笔记. 0.05 linux 2.6 platform device register 平台设备注册 2/2 共2篇

    驱动开发读书笔记. 0.05 linux 2.6 platform device register 平台设备注册 2/2 共2篇 下面这段摘自 linux源码里面的文档 : 内核版本2.6.22Doc ...

  3. Spring bean 实现初始化、销毁方法的方式及顺序

    Spring 允许 Bean 在初始化完成后以及销毁前执行特定的操作,常用方法有三种: 使用注解,在指定方法上加上@PostConstruct或@PreDestroy注解来制定该方法是在初始化之后还是 ...

  4. hdu 1387(Team Queue) STL

    Team Queue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  5. Python列表切成多个

    li = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18] #arr是被分割的list,n是每个chunk中含n元素. def chunks(arr, n) ...

  6. 关于BaseExpandableListAdapter

    首先要明确,可折叠列表在每个项是包含子项的,那么肯定会用到集合嵌套!下面是封装的两个实体类: package com.yx.pojo;public class Chid {        privat ...

  7. js 基本类型与引用类型的区别

    1. 基本类型: string,number,boolean,null,undefined 2. 引用类型: Function,Array,Object 访问方式                   ...

  8. TDDL DataSource

    TDDL DataSource 分为 AtomDataSource GroupDatasource 他们两者没有依赖关系, 都实现了 JDBC 规范, 可以作为独立的 datasource 单独使用 ...

  9. ajax跨域往php程序post数据时,php程序总是执行两次的解决方法

    php程序是部署在IIS7上面,ajax提交数据时,遇到了两个问题,一个就是跨域,一个php程序总会被执行两次. 第一个问题的解决方法,是百度出来的,添加下面几行代码就可以了: header('Acc ...

  10. 关于meta标签

    一.Meta标签中的format-detection属性及含义 意为:格式检测 或许你会有这样的经历:当你在制作手机端的页面中,点击了没有加任何链接的格式的数字时,这时手机会进行自动拔号提示操作! 禁 ...