題目描述 description
農夫約翰知道每一條排水溝每分鐘可以流過的水量,和排水系統的準確布局(起點為水潭而終點為小溪的一張網)。需要注意的是,有些時候從一處到另一處不只有一條排水溝。
根據這些資訊,計算從水潭排水到小溪的最大流量。對於給出的每條排水溝,雨水只能沿著乙個方向流動,注意可能會出現雨水環形流動的情形。
輸入描述 input description
第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)是這條排水溝的最大容量。
輸出描述 output description
輸出乙個整數,即排水的最大流量。
樣例輸入 sample input
5 41 2 40
1 4 20
2 4 20
2 3 30
3 4 10
樣例輸出 sample output 50
分析:模版的dinic演算法,找個模版bfsdinic就好了。
**:const
maxn=200;
maxm=400;
inf=100000000;
varv,r,next:array [1..maxm] of longint;
first,now,q,dis:array [1..maxn] of longint;
n,m,x,y,w,i,ans:longint;
procedure addedge(i,x,y,w:longint);
begin
v[i]:=y;
r[i]:=w;
if first[x]<>0 then
next[i]:=first[x];
first[x]:=i;
end;
function check:boolean;
varhead,tail,i,x,y:longint;
begin
for i:=1 to n do
dis[i]:=-1;
head:=0;tail:=1;q[1]:=1;dis[1]:=0;
while head0 do
begin
y:=v[i];
if (r[i]>0) and (dis[y]<0) then
begin
dis[y]:=dis[x]+1;
inc(tail);q[tail]:=y;
if y=n then
exit(true);
end;
i:=next[i];
end;
end;
exit(false);
end;
function try(u,min:longint):longint;
vari,y,mi:longint;
begin
if u=n then
exit(min);
i:=now[u];
while i<>0 do
begin
y:=v[i];
if (r[i]>0) and (dis[y]=dis[u]+1) then
begin
if r[i]>min then
mi:=min
else
mi:=r[i];
mi:=try(y,mi);
if mi>0 then
begin
dec(r[i],mi);
if i mod 2=1 then
inc(r[i+1],mi)
else
inc(r[i-1],mi);
exit(mi);
end;
end;
i:=next[i];
end;
exit(0);
end;
procedure dinic;
vari:longint;
begin
while check do
for i:=1 to 2*m do
now[i]:=first[i];
end;
begin
readln(m,n);
for i:=1 to m do
begin
readln(x,y,w);
addedge(2*i-1,x,y,w);
addedge(2*i,y,x,0);
end;
dinic;
ans:=0;
i:=first[n];
while i<>0 do
begin
ans:=ans+r[i];
i:=next[i];
end;
writeln(ans);
end.
草地排水 codevs1993 網路流
農夫約翰知道每一條排水溝每分鐘可以流過的水量,和排水系統的準確布局 起點為水潭而終點為小溪的一張網 需要注意的是,有些時候從一處到另一處不只有一條排水溝。根據這些資訊,計算從水潭排水到小溪的最大流量。對於給出的每條排水溝,雨水只能沿著乙個方向流動,注意可能會出現雨水環形流動的情形。第1行 兩個用空格...
草地排水 (網路流)gzoi
農夫john不僅知道每條溝渠每分鐘可以傳輸多少加侖的水,而且知道溝渠的精確布局,將水從池塘中排出,通過複雜的網路注入到每條溝渠和溪流中。給出所有的有關資訊,確定可以從池塘中流出並流入溪流中的水的最大速率。對每個溝渠,水流的方向是唯一的,但水可以迴圈流動。輸入 輸入包含若干測試用例。對於每個測試用例,...
codevs 1993草地排水
農夫約翰知道每一條排水溝每分鐘可以流過的水量,和排水系統的準確布局 起點為水潭而終點為小溪的一張網 需要注意的是,有些時候從一處到另一處不只有一條排水溝。根據這些資訊,計算從水潭排水到小溪的最大流量。對於給出的每條排水溝,雨水只能沿著乙個方向流動,注意可能會出現雨水環形流動的情形。輸入描述 inpu...