Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 61571 | Accepted: 23621 |
Description
Farmer John knows not only how many gallons of water each ditch can transport per minute but also the exact layout of the ditches, which feed out of the pond and into each other and stream in a potentially complex network.
Given all this information, determine the maximum rate at which water can be transported out of the pond and into the stream. For any given ditch, water flows in only one direction, but there might be a way that water can flow in a circle.
Input
Output
Sample Input
5 4 1 2 40 1 4 20 2 4 20 2 3 30 3 4 10
Sample Output
50
题意:如今有m个池塘(从1到m開始编号,1为源点,m为汇点),及n条水渠,给出这n条水渠所连接的点和所能流过的最大流量。求从源点到汇点能流过的最大流量。(网络流模板题)
代码:
type
node=record
y,r,next,op:longint;
end;
var
g:array [1..400] of node;
h,level,q:array [1..400] of longint;
i,j,m,n,ans,a,b,c,vs,vt,tot:longint;
function min(x,y:longint):longint;
begin
if x<y then
exit(x);
exit(y);
end;
function dfs(v,a:longint):longint;
var
tmp,u,ans,value,flow:longint;
begin
if (v=vt) or (a=0) then exit(a);
ans:=0;
tmp:=h[v];
while tmp<>-1 do
begin
u:=g[tmp].y;
value:=g[tmp].r;
if level[v]+1=level[u] then
begin
flow:=dfs(u,min(a,value));
if flow<>0 then
begin
g[tmp].r:=g[tmp].r-flow;
g[g[tmp].op].r:=g[g[tmp].op].r+flow;
ans:=ans+flow;
a:=a-flow;
if a=0 then break;
end;
end;
tmp:=g[tmp].next;
end;
exit(ans);
end;
function bfs:boolean;
var
u,tmp,l,f,v:longint;
begin
fillchar(level,sizeof(level),0);
q[1]:=vs;
level[vs]:=1;
l:=1;
f:=1;
repeat
v:=q[l];
tmp:=h[v];
while tmp<>-1 do
begin
u:=g[tmp].y;
if (g[tmp].r<>0) and (level[u]=0) then
begin
level[u]:=level[v]+1;
inc(f);
&
Ubuntu环境下挂载新硬盘
软碟通 UltraISO U启替代品 Win32DiskImager 无设备 无盘符 无u盘 无优盘 解决方案 之diskpart
delphi Integer overflow
MSBuild Tools offline
delphi synedit免费的拼写检查器dll
git 自定义命令行
lua编译
gcc ar
Windows Subsystem for Linux (WSL)挂载移动硬盘U盘 卸载 c d 盘