最大流的第一道题,刚开始学这玩意儿,感觉好难啊!哎·····

希望慢慢地能够理解一点吧!

#include<stdio.h>

#include<string.h>

#include<queue>

using namespace std;

#define inf 1000000

#define min(a,b) a<b?a:b

int map[210][210],pre[210],maxf[210];

int n,m;

int bfs()//搜索,截止找不到增广路

{


int i;


queue<int>q;


for(i=0;i<=m;i++)


{


maxf[i]=inf;


pre[i]=-1;


}


pre[1]=0;


q.push(1);


while(!q.empty())


{


int qian=q.front();


q.pop();


int hou;


for(hou=1;hou<=m;hou++)


{


if(map[qian][hou]&&pre[hou]==-1)


{


pre[hou]=qian;


maxf[hou]=min(maxf[qian],map[qian][hou]);


q.push(hou);


}


}


}


if(pre[m]==-1)return 0;


return maxf[m];

}

int ek()//更新与修复

{


int max=0,kejia;


while(kejia=bfs())


{


max+=kejia;


int index=m,qian;


while(index!=1)


{


qian=pre[index];


map[qian][index]-=kejia;


map[index][qian]+=kejia;


index=qian;


}


}


return max;

}

int main()

{


int i,u,v,w,ans;


while(scanf("%d%d",&n,&m)!=EOF)


{


memset(map,0,sizeof(map));


for(i=0;i<n;i++)


{


scanf("%d%d%d",&u,&v,&w);


map[u][v]+=w;


}


ans=ek();


printf("%d\n",ans);


}


return 0;

}

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1532
网络流 定义:流网络G(V,E)是一个V有向图,其中S为源点,T为汇点。 定义:C(u,v)为u到v的容量

,其中对于每条边(u,v)∈E,有C(u,v)≥0。否则C(u,v)=0。

定义:(u,v)为u到v的流量,对所有u,v∈V, 有f(u,v)≤c(u,v)。∑f(u,v)称作网络的流

记作

f(S,T) 定义:max(∑f(u,v))=max(f(S,T))为网络的最大流量。记住|f(s,t)|

残留网络

定义:Cf(u,v)为u到v的残留容量, Cf(u,v)=C(u,v)-f(u,v)。

定义:残留网络Ef={(u,v)∈VXV,Cf(u,v)}石油残留边组成的网络。

定义:增广路径是起点为S,终点为T的一组边集,其中Cf(p)=min{cf(u,v):(u,v)∈p}称为增广路径的容量。

最大流最小割定义:割(S,T)将网络分成两部分,割得流等于∑c(u,v) ,(u∈S,v∈T) 记作c(S,T)。

明显f(S,T)≤c(S,T),我们以后用c(S,T) 表达最小割。

定理:若残留网络中不存在增广路,则当前流为最大流

定理:最大流等于最小割

证明:

假设残留图

Gf

不存在增广路径,根据以下规则划分两个点集合S={v∈V:Gf 存在从s到v的路径}

T={v∈V:v∉S}

因为Gf不存在增广路,所以t ∉S, 对顶点u,v, 若u∈S,f(u,v)=c(u,v),则v属于T,否则v属于S,

此时f(S,T)=C(S,T),

f(S,T)<=C(S,T) 所以f(S,T)为最大流,此时残留图中无增广路

 

hdu 1532 Drainage Ditches (最大流)的更多相关文章

  1. POJ 1273 || HDU 1532 Drainage Ditches (最大流模型)

    Drainage DitchesHal Burch Time Limit 1000 ms Memory Limit 65536 kb description Every time it rains o ...

  2. hdu 1532 Drainage Ditches(最大流)

                                                                                            Drainage Dit ...

  3. HDU 1532 Drainage Ditches(最大流 EK算法)

    题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1532 思路: 网络流最大流的入门题,直接套模板即可~ 注意坑点是:有重边!!读数据的时候要用“+=”替 ...

  4. HDU 1532 Drainage Ditches 最大流 (Edmonds_Karp)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1532 感觉题意不清楚,不知道是不是个人英语水平问题.本来还以为需要维护入度和出度来找源点和汇点呢,看 ...

  5. poj 1273 && hdu 1532 Drainage Ditches (网络最大流)

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 53640   Accepted: 2044 ...

  6. hdu 1532 Drainage Ditches(最大流模板题)

    Drainage Ditches Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  7. HDU 1532 Drainage Ditches (网络流)

    A - Drainage Ditches Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64 ...

  8. HDU 1532 Drainage Ditches 分类: Brush Mode 2014-07-31 10:38 82人阅读 评论(0) 收藏

    Drainage Ditches Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  9. HDU 1532 Drainage Ditches (最大网络流)

    Drainage Ditches Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) To ...

随机推荐

  1. AssetBundle——外部加载资源Asset

    几篇很不错的文章  AssetBundle创建到使用入门 全面理解Unity加载和内存管理 实用的创建AssetBundle的脚本   相关资源 相关的共享资源下载  本共享包括创建assetbund ...

  2. 版本控制软件——tortoiseSVN的基础使用

    零 基本功能介绍... 2 一 安装及下载client端... 2 二 登陆和文件下载... 2 三 新增档案及目录到服务器中... 4 四 文件对比... 13 4.1 文件回溯... 13 4.2 ...

  3. 搜索关键词智能提示suggestion

    转载自:stormbjm的专栏 题目详情:百度搜索框中,输入“北京”,搜索框下面会以北京为前缀,展示“北京爱情故事”.“北京公交”.“北京医院”等等搜索词,输入“结构之”,会提示“结构之法”,“结构之 ...

  4. js学习笔记1:语法、数据类型与转换、运算符与运算

    注意: 上部代码错误,将停止运行,下部的代码无法显示            typeof 用来定义内容类型,不会输出内容只会输出类型 一.js输出语法         1. 弹窗输出('')内的内容: ...

  5. eclipse 创建 maven 项目时如何修改 web 的版本和 jdk 的版本

    eclipse 创建 maven 项目时如何修改 web 的版本和 jdk 的版本 在使用 eclipse 创建 maven 项目的时候,默认的 web.xml 的版本时 2.3,默认 jre 的版本 ...

  6. 转:xxe attack学习

    小结 1.http包发送类型:content-type:text/xml2.xxe漏洞非常危险, 因为此漏洞会造成服务器上敏感数据的泄露,和潜在的服务器拒绝服务攻击.要去校验DTD(document ...

  7. 第一个ajax小demo

    第一个ajax小demo 文章来源:http://blog.csdn.net/magi1201/article/details/44569657

  8. 初拾Java(问题一:404错误,页面找不到)

    做测试尤其是想走自动化测试之路的人,怎么可以不会码代码?!怒了... 再次开始拾起Java,坚持坚持!!! 刚写了一个JSP页面,想在Myeclipse里面跑来试试,结果搞了半天出现以下错误: 试着去 ...

  9. 2017/11/7 Leetcode 日记

    2017/11/7 Leetcode 日记 669. Trim a Binary Search Tree Given a binary search tree and the lowest and h ...

  10. Python协程(中)

    协程嵌套 使用async可以定义协程,协程用于耗时的io操作,我们也可以封装更多的io操作过程,这样就实现了嵌套的协程,即一个协程中await了另外一个协程,如此连接起来. import asynci ...