Cod sursa(job #67638)

Utilizator al3csutzuSirbu Alexandru al3csutzu Data 25 iunie 2007 12:55:38
Problema Sate Scor 30
Compilator fpc Status done
Runda preONI 2007, Runda Finala, Clasa a 9-a si gimnaziu Marime 0.92 kb
program satele;
var a:array[1..300] of longint;
d:array[0..300,0..300] of longint;
k,n,i,m,xc,yc,xx,yy,l,j:longint;
f,g:text;
st:boolean;
begin
  assign(f,'sate.in'); assign(g,'sate.out');
  reset(f); rewrite(g);
  read(f,n,m,xc,yc);
  j:=0;
  for i:=1 to m do
  begin
     read(f,xx,yy,d[xx,yy]);
     d[yy,xx]:=d[xx,yy];
  end;
  repeat
  st:=true;
  for i:=1 to n do
  begin
    l:=0;
    for j:=1 to n do
    if d[i,j]<>0 then
    begin
      l:=l+1;
      a[l]:=j;
      for k:=1 to l-1 do
      if (d[a[k],j]=0) or (d[j,a[k]]=0)then
      begin
        if ((a[k]>i) and (j>i)) or ((a[k]<i) and (j<i)) then
        d[a[k],j]:=d[i,j]-d[i,a[k]] else d[a[k],j]:=d[i,j]+d[i,a[k]];
        if d[a[k],j]<0 then d[a[k],j]:=d[a[k],j]*(-1); st:=false;
        d[j,a[k]]:=d[a[k],j];
      end;
    end;
  end;
  until st;
  if xc>yc then writeln(g,d[xc,yc]) else writeln(g,d[yc,xc]);
  close(f); close(g);
end.