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

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

#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. 解决uc浏览器不支持vw单位的方法

    插入下段代码,使用rem来代替vw <script type="text/javascript"> (function (doc, win) { var docEl = ...

  2. HDU 2859 Phalanx(二维DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2859 题目大意:对称矩阵是这样的矩阵,它由“左下到右”线对称. 相应位置的元素应该相同. 例如,这里是 ...

  3. LeetCode765. Couples Holding Hands

    N couples sit in 2N seats arranged in a row and want to hold hands. We want to know the minimum numb ...

  4. pdb-不需要IDE也能调试

    python中有个pdb模块,使python代码也可以像gdb那样进行调试,一般情况下pdb模块可以在代码内直接使用,也可以通过命令行参数的形式添加该模块进行调试(python -m pdb file ...

  5. 【51nod】1227 平均最小公倍数

    题解 这个故事告诉们数论函数不要往分式上跑,你推不出来 好久没推式子了这么明显的转化我都忘了= = 首先\(A(n) = \frac{1}{n} \sum_{i = 1}^{n} \frac{i * ...

  6. 【Java】Java中常用的String方法

    本文转载于:java中常用的String方法 1 length()字符串的长度 String a = "Hello Word!"; System.out.println(a.len ...

  7. ref:JAVA代码审计的一些Tips(附脚本)

    ref:https://xz.aliyun.com/t/1633/ JAVA代码审计的一些Tips(附脚本) 概述 本文重点介绍JAVA安全编码与代码审计基础知识,会以漏洞及安全编码示例的方式介绍JA ...

  8. viewpager切换耗时控制

    原文地址https://my.oschina.net/javalover/blog/179003 public class FixedSpeedScroller extends Scroller { ...

  9. CodeForces 805A Fake NP

    直觉. 一段区间中,肯定是$2$的倍数最多,因为区间长度除以$2$得到的数字最大.但只有$1$个数字的时候需要特判. #include <cstdio> #include <cmat ...

  10. 洛谷P3538 [POI2012]OKR-A Horrible Poem [字符串hash]

    题目传送门 A Horrible Poem 题目描述 Bytie boy has to learn a fragment of a certain poem by heart. The poem, f ...