Cod sursa(job #139112)

Utilizator dascalu2Dascalu Andi FLorin dascalu2 Data 19 februarie 2008 18:49:57
Problema Cerere Scor 20
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.19 kb
type adresa=^nod;
     nod= record
          inf:longint;
          adr:adresa;
          end;
var n,i,ch:longint;
    g,st,af,t:array[1..100000]of integer;
    vc:array[1..100000]of adresa;
procedure citire;
var x,y:longint;
    q:adresa;
begin
     assign(input,'cerere.in');
     reset(input);
     readln(n);
     for i:=1 to n do
     read(g[i]);
     for i:=1 to n do
     vc[i]:=nil;
     for i:=1 to n-1 do
     begin
          read(x,y);
          t[y]:=x;
          new(q);
          q^.inf:=y;
          q^.adr:=vc[x];
          vc[x]:=q;
     end;
     close(input);
end;
procedure parcad(k,n:integer);
var p:adresa;
    t,pasi:integer;
begin
     st[k]:=n;
     p:=vc[n];
     if (g[n]=0) then
       af[n]:=0
     else
       af[n] := af[st[k-g[n]]]+1;
     while(p<>nil)do
     begin
          parcad(k+1,p^.inf);
          p:=p^.adr;
     end;
end;
procedure afisare;
begin
      assign(output,'cerere.out');
      rewrite(output);
      for i:=1 to n do
      write(af[i],' ');
      close(output);
end;

begin
citire;
for i:=1 to n do
    if(t[i]=0)then
    begin
         ch:=i;
         break
    end;
parcad(1,ch);
afisare;
end.