比赛 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.