Cod sursa(job #201182)

Utilizator GavrilaVladGavrila Vlad GavrilaVlad Data 29 iulie 2008 15:33:21
Problema Cerere Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.84 kb
var v,a,b,c,d,e,g,s,r:array[0..100100]of longint;
    n,i,j,k:longint;
    f:text;
procedure cerere(x,o:longint);
var y:longint;
begin
   if v[x]=0 then r[x]:=0
             else r[x]:=s[o-v[x]]+1;
   s[o]:=r[x];
   for y:=c[x-1]+1 to c[x] do
   cerere(g[y],o+1);
end;
begin
   assign(f,'cerere.in');
   reset(f);
   readln(f,n);
   for i:=1 to n do
   read(f,v[i]);
   for i:=1 to n-1 do
   begin
   read(f,a[i],b[i]);
   d[b[i]]:=1;
   c[a[i]]:=c[a[i]]+1;
   end;
   close(f);
   for i:=1 to n do
   c[i]:=c[i]+c[i-1];
   for i:=1 to n do
   begin
   if(d[i]=0)then k:=i;
   e[i]:=c[i-1]+1;
   end;
   for i:=1 to n-1 do
   begin
   g[e[a[i]]]:=b[i];
   e[a[i]]:=e[a[i]]+1;
   end;
   cerere(k,1);
   assign(f,'cerere.out');
   rewrite(f);
   for i:=1 to n do
   write(f,r[i],' ');
   writeln(f);
   close(f);
end.