洛谷P2740 [USACO4.2]草地排水Drainage Ditches
题目背景
在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水。这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间。因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹没的烦恼(不用担心,雨水会流向附近的一条小溪)。作为一名一流的技师,农夫约翰已经在每条排水沟的一端安上了控制器,这样他可以控制流入排水沟的水流量。
题目描述
农夫约翰知道每一条排水沟每分钟可以流过的水量,和排水系统的准确布局(起点为水潭而终点为小溪的一张网)。需要注意的是,有些时候从一处到另一处不只有一条排水沟。
根据这些信息,计算从水潭排水到小溪的最大流量。对于给出的每条排水沟,雨水只能沿着一个方向流动,注意可能会出现雨水环形流动的情形。
输入输出格式
输入格式:
第1行: 两个用空格分开的整数N (0 <= N <= 200) 和 M (2 <= M <= 200)。N是农夫John已经挖好的排水沟的数量,M是排水沟交叉点的数量。交点1是水潭,交点M是小溪。
第二行到第N+1行: 每行有三个整数,Si, Ei, 和 Ci。Si 和 Ei (1 <= Si, Ei <= M) 指明排水沟两端的交点,雨水从Si 流向Ei。Ci (0 <= Ci <= 10,000,000)是这条排水沟的最大容量。
输出格式:
输出一个整数,即排水的最大流量。
输入输出样例
5 4
1 2 40
1 4 20
2 4 20
2 3 30
3 4 10
50
说明
题目翻译来自NOCOW。
USACO Training Section 4.2
裸的最大流
dinic:
program rrr(input,output);
const
inf=;
type
pointer=^nodetype;
nodetype=record
t,c:longint;
next,rev:pointer;
end;
var
a,cur:array[..]of pointer;
q,d:array[..]of longint;
p:pointer;
n,m,i,x,y,c,ans,h,t:longint;
procedure ins(x,y,c:longint);
begin
new(p);p^.t:=y;p^.c:=c;p^.next:=a[x];a[x]:=p;
end;
procedure add(x,y,c:longint);
begin
ins(x,y,c);ins(y,x,);
a[x]^.rev:=a[y];a[y]^.rev:=a[x];
end;
function min(a,b:longint):longint;
begin
if a<b then exit(a) else exit(b);
end;
procedure bfs;
begin
for i:= to n do d[i]:=-;
h:=;t:=;q[]:=;d[]:=;
while h<t do
begin
inc(h);
p:=a[q[h]];
while p<>nil do
begin
if (d[p^.t]=-) and (p^.c>) then
begin
d[p^.t]:=d[q[h]]+;
inc(t);q[t]:=p^.t;
end;
p:=p^.next;
end;
end;
end;
function dfs(k,f:longint):longint;
var
ans,r:longint;
p:pointer;
begin
if (k=n) or (f=) then exit(f);
ans:=;
p:=cur[k];
while p<>nil do
begin
if (d[p^.t]=d[k]+) and (p^.c>) then
begin
r:=dfs(p^.t,min(f,p^.c));
p^.c:=p^.c-r;
p^.rev^.c:=p^.rev^.c+r;
ans:=ans+r;
f:=f-r;
if f= then break;
end;
p:=p^.next;
cur[k]:=p;
end;
if f> then d[k]:=-;
exit(ans);
end;
begin
//assign(input,'r.in');assign(output,'r.out');reset(input);rewrite(output);
readln(m,n);
for i:= to n do a[i]:=nil;
for i:= to m do begin read(x,y,c);add(x,y,c); end;
ans:=;
while true do
begin
bfs;
if d[n]=- then break;
for i:= to n do cur[i]:=a[i];
ans:=ans+dfs(,inf);
end;
write(ans);
//close(input);close(output);
end.
洛谷P2740 [USACO4.2]草地排水Drainage Ditches的更多相关文章
- P2740 [USACO4.2]草地排水Drainage Ditches
题目背景 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹没 ...
- luogu P2740 [USACO4.2]草地排水Drainage Ditches |网络流
题目背景 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹没 ...
- [USACO4.2]草地排水Drainage Ditches
题目背景 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草 要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹 ...
- 最大流 [USACO4.2]草地排水Drainage Ditches
Background 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水系统来使贝茜的草地免 ...
- 【网络流】[USACO4.2]草地排水Drainage Ditches
用EdmondsKarp可过 题目背景 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水系 ...
- [USACO4.2] 草地排水 Drainage Ditches (最大流)
题目背景 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹没 ...
- luogu2740 [USACO4.2]草地排水Drainage Ditches 最大流EK
练一下最大流 #include <iostream> #include <cstring> #include <cstdio> #include <queue ...
- 【USACO4.2】草地排水Drainage Ditches(最大流)
题目背景 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹没 ...
- 草地排水 洛谷P2740 最大流 入门题目
草地排水 洛谷P2740 最大流入门题目 题意 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一 ...
随机推荐
- Python中的对象引用、浅拷贝与深拷贝
最近项目中遇到一个Python浅拷贝机制引起的bug,由于对于Python中对象引用.赋值.浅拷贝/深拷贝机制没有足够的认识,导致调试了很久才发现问题,这里简单记录一下相关概念. 在Python的设计 ...
- centOS上安装最新git 2.4.0
git 地址: https://www.kernel.org/pub/software/scm/git/ 1. 先安装一堆依赖 yum install curl curl-devel zlib-de ...
- Yii2.0 Gridview为某列增加属性
我们知道GridView组件非常方便,会自动生成数据表格.table tr td神马的全自动生成的.但是如果想定制化稍微有点难度. 比如想在某列td上应用样式. 老写法是这样的 <?= Grid ...
- 属性文件操作之Properties与ResourceBundle
1.Properties与ResourceBundle 两个类都可以读取属性文件中以key/value形式存储的键值对,ResourceBundle读取属性文件时操作相对简单. 2.Propertie ...
- 【word基础】如何取消word首字母大写
- exe4j 使用记录(二):jar打包exe
一.环境 exe4j: 6.0.2 jre(32位): 1.8 二.打包过程 1.新建一个文件夹testExe(我的目录位置:D:\testExe)用来存放所需要打成exe的jar包.jdk或者jre ...
- 廖雪峰git笔记
查看本地机子的在Git上的名字和邮箱:git config user.namegit config user.email 对所有仓库指定相同的用户名和Email地址:git config --glob ...
- [线性DP][codeforces-1110D.Jongmah]一道花里胡哨的DP题
题目来源: Codeforces - 1110D 题意:你有n张牌(1,2,3,...,m)你要尽可能多的打出[x,x+1,x+2] 或者[x,x,x]的牌型,问最多能打出多少种牌 思路: 1.三组[ ...
- rest_framework组件
认证组件 局部认证 在需要认证的视图类里加上authentication_classes = [认证组件1类名,认证组件2类名....] 示例如下: seralizers.py from rest_f ...
- 《我是一只it小小鸟》观后感
在这个学期开始的时候我们的老师推荐给我们这本书.在很多的网站上只要一提到IT,总会有人推荐这本书,我在读这本书之前看了很多关于它的书评,其中有一位网友的一句话让我对它产生了很大的兴趣:“印象最深的是书 ...