问题描述:约翰是个农民,每次下雨的时候他的庄家总是会被淹没,这就意味着当庄家被水淹后需要很长时间才能重新生长出来,因此,约翰已经建立了一系列排水管道为了使他的庄家尽可能被淹没的最少,也就是说管道的排水量必须很大.作为一名工程师,约翰可以计算出管道网能排水的最大能力.

Input:输入包含多组用例,每组用例第一行是两个数N,M,N表示一共有N个管道,M表示一共有M个点,接下来N行每行输入三个数字a,b,c表示,a管道口到b管道口最大排水能力为c.

Output:对每一组用例,输出排水量的最大值

Sample Input:

5 4
1 2 40
1 4 20
2 4 20
2 3 30
3 4 10

Sample Output:

50

这里我采用的是Fold-Fulkerson算法。

//这里的起点默认为1,终点为节点数M

#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<string.h>
#define maxint 999999999
using namespace std;
int rest[][];//二位数组rest绘制有向图
int pre[];//保存每次需找的增广路径的前驱
int Min;//写法原因Min需定义为全局变量
bool bfs(int M)//增广路径的搜索
{
queue<int>que;
bool vis[];//常规搜索都有的标记数组vis;
memset(vis,,sizeof(vis));
memset(pre,-,sizeof(pre));//前驱数组初始化
que.push();
vis[]=;
while(!que.empty())
{
int s=que.front();
que.pop();
if(s==M)
{
return true;
} for(int i=;i<=M;i++)
{
if(rest[s][i]&&vis[i]==)//rest[s][t]不为0说明选择的这条路径中从s点到达i点的通道还未被充满,说明当前存在增广路径
{
pre[i]=s;//前驱数组更新
  vis[i]=;
que.push(i);
}
}
}
return false;//若不存在增广路径则返回false说明找不到
} void update(int M)//对每次所选的路径可增加流量更新,返回并加到总流量数sum中
{
if(M==)//从后往前找起,知道找到起点为止
return;
int s=pre[M];
Min=min(Min,rest[s][M]);
update(s);//回溯更新
rest[s][M]-=Min;//正反路径进行更新的区别
rest[M][s]+=Min;
} int main()
{
int a,b,c;
int N,M;
while(scanf("%d%d",&N,&M)!=EOF)
{
memset(rest,,sizeof(rest));
for(int i=;i<=N;i++)
{
scanf("%d%d%d",&a,&b,&c);
rest[a][b]+=c;//想清楚为什么是+不是=
}
int sum=;
while(bfs(M))
{
Min=maxint;//由于可能有多次路径选择所以需要在while内对全局变量Min进行初始化
update(M);
sum+=Min;
}
printf("%d\n",sum);//输出到达终点可达到的最大流量
}return ;
}

HDU1532 网络流:最大流之福德福克森算法的更多相关文章

  1. HDU1532 网络流最大流【EK算法】(模板题)

    <题目链接> 题目大意: 一个农夫他家的农田每次下雨都会被淹,所以这个农夫就修建了排水系统,还聪明的给每个排水管道设置了最大流量:首先输入两个数n,m ;n为排水管道的数量,m为节点的数量 ...

  2. POJ 1459-Power Network(网络流-最大流-ISAP)C++

    Power Network 时间限制: 1 Sec  内存限制: 128 MB 题目描述 A power network consists of nodes (power stations, cons ...

  3. [POJ1273][USACO4.2]Drainage Ditches (网络流最大流)

    题意 网络流最大流模板 思路 EK也不会超时 所以说是一个数据比较水的模板题 但是POJ有点坑,多组数据,而且题目没给 哭得我AC率直掉 代码 用的朴素Dinic #include<cstdio ...

  4. 网络流 最大流—最小割 之SAP算法 详解

    首先引入几个新名词: 1.距离标号: 所谓距离标号 ,就是某个点到汇点的最少的弧的数量(即边权值为1时某个点到汇点的最短路径长度). 设点i的标号为level[i],那么如果将满足level[i]=l ...

  5. HDU 3081 Marriage Match II (网络流,最大流,二分,并查集)

    HDU 3081 Marriage Match II (网络流,最大流,二分,并查集) Description Presumably, you all have known the question ...

  6. Redraw Beautiful Drawings(hdu4888)网络流+最大流

    Redraw Beautiful Drawings Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/O ...

  7. A simple Gaussian elimination problem.(hdu4975)网络流+最大流

    A simple Gaussian elimination problem. Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65 ...

  8. 【bzoj3130】[Sdoi2013]费用流 二分+网络流最大流

    题目描述 Alice和Bob做游戏,给出一张有向图表示运输网络,Alice先给Bob一种最大流方案,然后Bob在所有边上分配总和等于P的非负费用.Alice希望总费用尽量小,而Bob希望总费用尽量大. ...

  9. 【bzoj1822】[JSOI2010]Frozen Nova 冷冻波 计算几何+二分+网络流最大流

    题目描述 WJJ喜欢“魔兽争霸”这个游戏.在游戏中,巫妖是一种强大的英雄,它的技能Frozen Nova每次可以杀死一个小精灵.我们认为,巫妖和小精灵都可以看成是平面上的点. 当巫妖和小精灵之间的直线 ...

随机推荐

  1. Android事件分发机制(下)

    这篇文章继续讨论Android事件分发机制,首先我们来探讨一下,什么是ViewGroup?它和普通的View有什么区别? 顾名思义,ViewGroup就是一组View的集合,它包含很多的子View和子 ...

  2. Sql Server 查看表修改记录

    可以尝试如下建议:1.可以使用默认的Log工具或者第三方的(比如:LiteSpeed)的工具.2.做Trace机制,下次出现问题可以溯源.3.一个简单的办法: --Step #1: USE DBNam ...

  3. boost和std中的thread的引用参数

    boost 1.60.0 先上代码: #include <boost/thread.hpp> #include <iostream> void add(int &i) ...

  4. 柏克EPS应急电源签约联达大厦保安全

    近日,柏克EPS应急电源成功签约佛山市联达大厦,保障大厦电力安全. 佛山市联达大厦占地6674㎡,总建筑面积约4.6万㎡,设有两层地下室,提供201个停车位,地面29层.大厦大楼分为主楼和副楼,主楼地 ...

  5. x.2

    某些原因,和女朋友分手了,难过 订的M18XR3居然提前了半个多月到货,开心 想想一个人的孤单,还是有点难过 转眼间人生已经过去小半,剩下的除去苟延残喘20年,也就不到20年时间蹦跶.都说人生如戏,既 ...

  6. jQuery原生框架-----------------dom操作

    // 扩展DOM操作方法jQuery.fn.extend({ // 设置或者获取元素的内容 html: function( html ) { /* * 实现思路: * 1.不传参,返回第一个元素的内容 ...

  7. Node相关参考资料

    参考资料: [玩转Nodejs日志管理log4js]http://blog.fens.me/nodejs-log4js/ [dependencies与devDependencies之间的区别]http ...

  8. setTimeout用于取消多次执行mouseover或者mouseenter事件,间接实现hover的悬停加载的效果.

    Mouseenter在鼠标滑上去不会对其子元素也发生监听, Mouseover在鼠标滑上去会对其子元素发生监听. 所以对于事件的监听,我们要看需求,这里是对父元素的监听,不需要对子元素做监听.就用mo ...

  9. JDom2的Xpath使用

    /** * XPath获取属性值 * @param root * @param xPath * @return */ public static String getXPathAttributeVal ...

  10. Android开发学习笔记:Intent的简介以及属性的详解【转】

    一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述 ...