Cod sursa(job #248679)

Utilizator valytgjiu91stancu vlad valytgjiu91 Data 26 ianuarie 2009 16:08:40
Problema Cerere Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.11 kb
   type lista=^elem;
        elem= record
             inf:longint;
              adu:lista  ;
              end;
    var n,i,x,y,s:longint;
       st,af,c,v:array[1..100]of longint;
       vc:array[1..100]of lista;
       q:lista;
       f,g:text;
   procedure dfs(k,n:longint);
   var p:lista;
   begin
        st[k]:=n;
        if (v[n]=0) then af[n]:=0
        else af[n] := af[st[k-v[n]]]+1;
        p:=vc[n];
        while(p<>nil)do
        begin
             dfs(k+1,p^.inf);
             p:=p^.adu;
        end;
   end;

   begin
   assign(f,'cerere.in');
        reset(f);
        readln(n);
        for i:=1 to n do
        read(v[i]);
        for i:=1 to n-1 do
        begin
             read(x,y);
             c[y]:=x;
             new(q);
             q^.inf:=y;
             q^.adu:=vc[x];
             vc[x]:=q;
        end;
        close(f);
   for i:=1 to n do
       if(c[i]=0)then
       begin
            s:=i;
            break
       end;
   dfs(1,s);
   assign(g,'cerere.out');
   rewrite(output);
   for i:=1 to n do
   write(g,af[i],' ');
   close(g);
   end.