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

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

#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. C语言实现int转换string

    #include <stdio.h> #include <stdlib.h> #include <string.h> int string2int(const ch ...

  2. C/C++——[03] 注释

    C/C++源程序中被注释的内容不能被编译,被认为是不属于程序的一部分. C/C++的注释有两种写法: 多行注释:以 “ /*”开头,以“ */”结尾: #include <stdio.h> ...

  3. C# String.Format用法和格式说明

    1.格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元) string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0 ...

  4. LightOJ 1410 Consistent Verdicts(找规律)

    题目链接:https://vjudge.net/contest/28079#problem/Q 题目大意:题目描述很长很吓人,大概的意思就是有n个坐标代表n个人的位置,每个人听力都是一样的,每人发出一 ...

  5. Java学习(简介,软件安装)

    1. Java概述: Java的发展可以归纳如下的几个阶段. (1)第一阶段(完善期):JDK 1.0 ( 1995年推出)一JDK 1.2 (1998年推出,Java更名为Java 2): (2)第 ...

  6. Hadoop案例(七)MapReduce中多表合并

    MapReduce中多表合并案例 一.案例需求 订单数据表t_order: id pid amount 1001 01 1 1002 02 2 1003 03 3 订单数据order.txt 商品信息 ...

  7. day2、购物商城

    作业:购物商城 商品展示,价格 买,加入购物车 付款,钱不够 代码如下: import codecs #登录接口,用户名密码都正确登录成功,否则失败 def login(your_name,your_ ...

  8. 美团offer面经

    美团offer面经 2017北京美团金融服务平台,java后台研发方向,一共3面技术面+HR面,前两轮技术面在酒店面的,第三面和HR面在总部. 一面(重复问的部分就写一次了)(40分钟) 1.自我介绍 ...

  9. 图片热点的使用,html <area> 的用法

    <area>标记主要用于图像地图,通过该标记可以在图像地图中设定作用区域(又称为热点),这样当用户的鼠标移到指定的作用区域点击时,会自动链接到预先设定好的页面.其基本语法结构如下: < ...

  10. powershell 获取 CPU 物理 / 逻辑核心数

    转载请注明: 仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/   获取 CPU 逻辑核心数的方法为:总逻辑核心数 = 物理核心数 * 每核逻辑核心数   其中 ...