Cod sursa(job #7163)

Utilizator VmanDuta Vlad Vman Data 21 ianuarie 2007 12:55:58
Problema Pachete Scor 0
Compilator fpc Status done
Runda preONI 2007, Runda 1, Clasa a 10-a Marime 1.05 kb
program pachete;
var n,i:word;
    xo,yo,nr:longint;
    x,y,d:array[1..50000]of longint;
    w:array[1..50000]of boolean;
    p:array[1..50000]of word;
    f:text;

procedure dijkstra;
var nod:word;
    min:longint;
begin
nod:=1;
w[nod]:=true;
for i:=2 to n do begin
    d[i]:=abs(x[i]-x[1])+abs(y[i]-y[1]);
    p[i]:=1;
end;
repeat
      min:=maxlongint;
      for i:=2 to n do
          if (d[i]<min)and(not w[i]) then begin min:=d[i];nod:=i;end;
      if min=maxlongint then break;
      w[nod]:=true;
      for i:=2 to n do
          if (not w[i])and(d[nod]+abs(x[nod]-x[i])+abs(y[nod]-y[i])<=d[i])
             then begin
                  d[i]:=d[nod]+abs(x[nod]-x[i])+abs(y[nod]-y[i]);
                  p[i]:=nod;
                  end;
until min=maxlongint;
end;

begin
assign(f,'pachete.in');reset(f);
readln(f,n);
inc(n);
readln(f,x[1],y[1]);
for i:=2 to n do
    readln(f,x[i],y[i]);
close(f);
dijkstra;
for i:=1 to n do
    if p[i]=1 then inc(nr);
assign(f,'pachete.out');rewrite(f);
write(f,nr);
close(f);
end.