【USACO 4.2.1】草地排水

Description

在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水。这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间。因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹没的烦恼(不用担心,雨水会流向附近的一条小溪)。作为一名一流的技师,农夫约翰已经在每条排水沟的一端安上了控制器,这样他可以控制流入排水沟的水流量。

农夫约翰知道每一条排水沟每分钟可以流过的水量,和排水系统的准确布局(起点为水潭而终点为小溪的一张网)。需要注意的是,有些时候从一处到另一处不只有一条排水沟。

根据这些信息,计算从水潭排水到小溪的最大流量。对于给出的每条排水沟,雨水只能沿着一个方向流动,注意可能会出现雨水环形流动的情形。

Input

第一行:
两个用空格分开的整数N (0 <= N <= 200)和M (2 <= M <= 200)。N是农夫约翰已经挖好的排水沟的数量,M是排水沟交叉点的数量。交点1是水潭,交点M是小溪。
第二行到第N+1行:
每行有三个整数,Si, Ei,和Ci。Si和Ei (1 <= Si, Ei <= M)指明排水沟两端的交点,雨水从Si流向Ei。Ci (0 <= Ci <= 10,000,000)是这条排水沟的最大容量。

Output

输出一个整数,即排水的最大流量。

Sample Input

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

Sample Output

50

Hint

Source

USACO
网络流

解析

这题就是网络流最大流的模板啊啊!!

当然对于我这种NOIp都没打过的蒟蒻还是有点难度

所以,似乎也没什么好讲的。。

直接DINIC就好了。

上代码吧:

#include<bits/stdc++.h>
using namespace std;inline int read(){int sum=0,f=1;char ch=getchar();while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0' && ch<='9'){sum=sum*10+ch-'0';ch=getchar();}return f*sum;
}const int INF=0x3f3f3f3f;
int n,m;
int mp[201][201];
int ans=0,tmp;
int d[1001],que[100001];bool bfs(int s){int h=1,t=1;memset(d,0xff,sizeof(d));que[1]=s;d[s]=0;while(h<=t){int x=que[h];for(int i=1;i<=m;i++){if(d[i]<0&&mp[x][i]>0){que[++t]=i;d[i]=d[x]+1;}}h++;}if(d[m]>0) return 1;return 0;
}int dfs(int x,int minn){if(x==m) return minn;int ret=0;for(int i=1;i<=m;i++){if(mp[x][i]&&d[i]==d[x]+1)if((ret=dfs(i,min(minn,mp[x][i])))){mp[x][i]-=ret;mp[i][x]+=ret;return ret;}}return 0;
}int main(){n=read();m=read();for(int i=1;i<=n;i++){int x=read(),y=read(),w=read();mp[x][y]+=w;}while(bfs(1)){while((tmp=dfs(1,INF))){ans+=tmp;}}printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/zsq259/p/10495199.html

题解 【USACO 4.2.1】草地排水相关推荐

  1. 问题 A: 草地排水

    问题 A: 草地排水 时间限制: 2 Sec 内存限制: 256 MB 提交: 122 解决: 30 [提交][状态] 题目描述 [问题描述] 我们都知道,草地排水是一道简单的usaco网络流裸题.当 ...

  2. 【网络流】解题报告:luogu P2740 [USACO4.2]草地排水Drainage Ditches(Edmonds-Karp增广路,最大流模板)

    题目链接:草地排水 若一条从源点到汇点的路径上各条边的剩余容量都大于0,则称这条路径为一条增广路. Edmonds-Karp增广路的策略就是不断用bfs寻找增广路,直至网络中不在存在增广路为止. 在每 ...

  3. 题解 | #[USACO 2012 Mar S]Flowerpot#

    题解 | #扑克牌大小# import java.util.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息public class Main { p 题解 | #密码截 ...

  4. [USACO4.2] 草地排水 Drainage Ditches (最大流)

    题目背景 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹没 ...

  5. 草地排水-网络流dinic

    题目描述 Description 在农夫约翰的农场上,每逢下雨,Bessie最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水 ...

  6. 【CodeVS】1993草地排水

    题目描述 Description 在农夫约翰的农场上,每逢下雨,Bessie最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水 ...

  7. 草地排水 改了又改(DCOJ6013)

    题目描述 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹没 ...

  8. [USACO4.2]草地排水Drainage Ditches

    https://www.luogu.org/problemnew/show/P2740 题解:网络流+最大流 /* *@Author: STZG *@Language: C++ */ #include ...

  9. 【codevs1993】草地排水,网络流入门(dinic+ispa)

    传送门 思路:裸 代码: #include<bits/stdc++.h> using namespace std; int n,m,tot=-1,x,y,z,s=1,t,ans; int ...

最新文章

  1. 深度学习在自动驾驶感知领域的应用
  2. 必会重构技巧(三):提取接口
  3. Codeforces Round #705 (Div. 2) D. GCD of an Array 质因子分解 + stl维护
  4. ansys变形太夸张_航母上的一颗铆钉能换一辆奥迪?太奢侈了
  5. 每个java小应用程序都得继承,JAVA复习题3
  6. java clob存储_java oracle clob string 大字符串存储
  7. MySQL的主从复制详解
  8. (101)FPGA面试题-Verilog设计偶校验位
  9. 线性代数【八】二次型
  10. #SQL1242错误
  11. js获取url参数方法
  12. 微信朋友圈html5广告,微信朋友圈原生广告页是什么
  13. java订餐管理系统
  14. python3.6 pillow,【Pillow】Python图像处理
  15. 食品经营许可证模板_食品流通许可证与食品经营许可证
  16. 官网下载Eclipse详细步骤
  17. vue下拉el-select二级联动
  18. 小米12X、小米12、小米12 Pro参数对比
  19. Python基础第一周
  20. 基金经理研究所 | 从兴全合润看谢治宇的攻守道

热门文章

  1. 桥牌笔记:三个输墩压缩为一个
  2. shell 常用命令语句
  3. 性能翻倍 IBM借DS3500拓中低端存储市场
  4. Hamilton Verissimo的blog
  5. sqlserver2000分页存储过程(原创)
  6. /lib64/libc.so.6 is not a symbolic link 解决方法
  7. javaweb火车车次信息管理+文件_厦门火车站启动“双十一”电商黄金周运输 投入列车数量为历年新高...
  8. Ajax 基础——未完待续
  9. 案例开发分析 || ​​​​​​​Scheduler组件
  10. 初次使用MyEclipse || Servlet 的生命周期