比赛 |
20101116 |
评测结果 |
MMMMMMMMMM |
题目名称 |
城市 |
最终得分 |
0 |
用户昵称 |
王者自由 |
运行时间 |
0.000 s |
代码语言 |
Pascal |
内存使用 |
0.00 MiB |
提交时间 |
2010-11-16 10:59:00 |
显示代码纯文本
program cost;
var n,m,u,v,s,i,j,a,b,c:longint;
F:array[1..10000]of longint;
G:array[1..10000,1..10000]of longint;
w:int64;
(*1) 给发点标号(0,+,d(s)), d(s)=Inf, 这时发点是已标号但未检查的点,其余的点是未标号的点.
(2) 若被标号的点都已检查过,这时的可行流就是最大流. 最小割(S*,S*’)中的S*就是已标号(且已检查)的点集.
最大流的总流量等于从源出发的所有流量的和. 退出.
(3) 任取一个被标号但未检查的点i, 找所有与点i邻接但未标号的点j,使满足以下两条件之一:
(a)若弧(i,j)上, fij<cij, 则给j点标号(i, +,d(j)), 其中d(j)=min(d(i), cij-fij),
(b)若弧(j,i)上,fji>0, 则给j点标号(i, -,d(j)), 其中d(j)=min(d(i), fji),
(c) 若收点n没有被标号,对i点的标记中+,- 号加圈,表示i点已检查。转(2). 否则令j=n. 进入以下调整过程
(4) 若j点的标记为正, 即(i,+ ,d(j)), 令fij=fij+d(n), 否则fji=fji-d(n)
(5) 若j=1, 去掉全部标记, 转(1), 否则转(4).*)
begin
assign(input,'cost.in'); reset(input);
assign(output,'cost.out'); rewrite(output);
readln(n,m,u,v,s);
for i:=1 to n do readln(F[i]);
for i:=1 to m do
begin
readln(a,b,c);
G[a,b]:=c;
end;
writeln(-1);
close(input); close(output);
end.