套了个EK的模板

//#pragma comment(linker, "/STACK:16777216") //for c++ Compiler
#include <stdio.h>
#include <iostream>
#include <climits>
#include <cstring>
#include <cmath>
#include <stack>
#include <queue>
#include <vector>
#include <algorithm>
#define ll long long
using namespace std; const int INF = 0x3f3f3f3f;
const int MAXN = ; queue <int> que; int n, m, max_flow; //max_flow是最大流
int map[MAXN][MAXN], flow[MAXN][MAXN]; // map[i][j]是每条边的容量,flow[i][j]是每条边的流量
int res[MAXN], pre[MAXN]; //res[]是每个点的剩余流量,pre[]是每个点的父亲 void init(){
memset(map,,sizeof(map));
memset(pre,,sizeof(pre));
} bool bfs(int src, int des){
int index;
memset(pre, -, sizeof(pre));
while(!que.empty()) que.pop(); //残余流量得变0,一开始所有点都没流入对吧
pre[src] = ; //源点嘛,父亲为0
que.push(src); //从源点开始进行BFS找增广路
while(!que.empty()){
index = que.front();
que.pop();
for(int i = ; i <= n; ++i){ //遍历所有点,找可行边
if(pre[i] == - && map[index][i] > ){ //该点剩余流量为0 且 容量大于流量,也就是找到了新的结点
pre[i] = index; //找到新结点,父节点得记录一下吧
if(i == des) return true;
que.push(i);
}
}
}
return false;
} int MaxFlow(int src, int des){
int i, maxflow = ;
while(bfs(src, des)){
int minflow = INF;
for(i = des; i != src; i = pre[i])
minflow = min(minflow, map[pre[i]][i]); //如果u的剩余流量能填满uv就填满,不能的话就把u这点的流量全部流向uv
for(i = des; i != src; i = pre[i]){ //如果还能增广,那么回溯,从汇点往回更新每条走过的边的流量
map[pre[i]][i] -= minflow; //更新正向流量 (注意这里更新的是流量,而不是容量)
map[i][pre[i]] += minflow; //更新反向流量
}
maxflow += minflow;
}
return maxflow;
} int main(){
int x, y, val;
while(EOF != scanf("%d%d",&m,&n)){
init();
while(m--){
scanf("%d%d%d",&x,&y,&val);
map[x][y] += val; //有重边
}
printf("%d\n",MaxFlow(, n));
}
return ;
}

POJ1273 最大流 EK算法的更多相关文章

  1. (通俗易懂小白入门)网络流最大流——EK算法

    网络流 网络流是模仿水流解决生活中类似问题的一种方法策略,来看这么一个问题,有一个自来水厂S,它要向目标T提供水量,从S出发有不确定数量和方向的水管,它可能直接到达T或者经过更多的节点的中转,目前确定 ...

  2. 二分图的最大匹配——最大流EK算法

    序: 既然是个图,并且求边数的最大值.那么这就可以转化为网络流的求最大流问题. 只需要将源点与其中一子集的所有节点相连,汇点与另一子集的所有节点相连,将所有弧的流量限制置为1,那么最大流 == 最大匹 ...

  3. 最大流EK算法/DINIC算法学习

    之前一直觉得很难,没学过网络流,毕竟是基础知识现在重新来看. 定义一下网络流问题,就是在一幅有向图中,每条边有两个属性,一个是cap表示容量,一个是flow 表示流过的流量.我们要求解的问题就是从S点 ...

  4. 最大流——EK算法

    一.算法理论 [基本思想] 反复寻找源点s到汇点t之间的增广路径,若有,找出增广路径上每一段[容量-流量]的最小值delta,若无,则结束.在寻找增广路径时,可以用BFS来找,并且更新残留网络的值(涉 ...

  5. vector实现最大流EK算法

    序: 在之前的文章中实现了不利用STL实现EK算法,效率也较高.这次我们企图简化代码,减少变量的使用与手写模拟的代码. 注意:vector等STL的container在不开O2优化的时候实现同一个效果 ...

  6. 最大流EK算法模板

    最近学了下最大流算法,大概思想算是懵懵懂懂了,现在想把模板记录下来,以备后面深刻学习之用. #include<cstdio> #include<cstring> using n ...

  7. 最大流EK算法

    给定一个有向图G=(V,E),把图中的边看作 管道,每条边上有一个权值,表示该管道 的流量上限.给定源点s和汇点t,现在假设 在s处有一个水源,t处有一个蓄水池,问从 s到t的最大水流量是多少? 网络 ...

  8. POJ-1459(最大流+EK算法)

    Power Network POJ-1459 这题值得思索的就是特殊的输入,如何输入一连串字符.这里采用的方法是根据输入已知的输入格式,事先预定好要接受的数据类型. 这里套用的板子也是最大流的模板,但 ...

  9. 【转】最大流EK算法

    转自:http://www.cnblogs.com/kuangbin/archive/2011/07/26/2117636.html 图-1 如图-1所示,在这个运输网络中,源点S和汇点T分别是1,7 ...

随机推荐

  1. QT 自动获取可用串口

    本来想直接用Settings来获取的,但是串口信息类似 "\Device\Serial0",死活获取不了,用了转义.反斜杠还是获取不到,所以就放弃了,网上好像也没有获取成功的. 所 ...

  2. Android系统设置— android.provider.Settings

    android.provider.Settings Intent intent = new Intent(android.provider.Settings.ACTION_SETTINGS); sta ...

  3. perl unicode utf-8 \x转换

    [root@dr-mysql01 ~]# cat x5.pl use Encode; use JSON; use URI::Escape; use LWP::Simple; my $host = &q ...

  4. delphi webbrowser 经常用法演示样例

    var Form : IHTMLFormElement ; D:IHTMLDocument2 ; begin with WebBrowser1 do begin D := Document as IH ...

  5. Android开发之旅:android架构

    本篇将站在顶级的高度——架构,来看android.我开篇就说了,这个系列适合0基础的人且我也是从0开始按照这个步骤来 学的,谈架构是不是有点螳臂挡车,自不量力呢?我觉得其实不然,如果一开始就对整个an ...

  6. 【node.js】本地模式安装express:'express' 不是内部或外部命令,也不是可运行的程序或批处理文件。

    今天闲来无事想起了node.js,因此到网上下载了一个node.js的安装程序进行安装.其中: 安装程序:node-v0.11.13-x64.msi PC系统:Windows 7 自定义安装路径:D: ...

  7. DBNull

    1. Null不是0.不是空,是"不知道".数据库中int是可以为null的,但是C#中int不可以为null,存在一个不匹配的问题. 2. 介绍"可控数据类型" ...

  8. qnx:从API开始理解QNX -- 消息传递

    从API开始理解QNX -- 消息传递    http://www.openqnx.com/chinese/viewtopic.php?f=5&t=2161 1. 频道与连接    Chann ...

  9. BZOJ 2463 谁能赢呢?

           刚开始做这道题时,我纠结了许久什么是最优走法,想了好半天也不晓得,后来被大神点醒,最有走法,最后就是每个格子都走了一遍,得,这下简单多了,算一下总共的格数是奇数还是偶数,奇数则先手赢,偶 ...

  10. dialog组件的jquery封装实现

    (function($){ $.extend({ Dialog : function(id, options){ var option = $.extend({}, options); option. ...