Pagini recente » Cod sursa (job #2733984) | Cod sursa (job #969520) | Cod sursa (job #2407947) | Cod sursa (job #1189862) | Cod sursa (job #448624)
Cod sursa(job #448624)
const infile='cerere.in';
outfile='cerere.out';
maxn=100003;
type nod=^pnod;
pnod=record inf:longint; next:nod; end;
var a:array[1..maxn]of nod;
str,t,sol,dfn:array[1..maxn]of longint;
uz:array[1..maxn]of boolean;
n:longint;
procedure citire;
var i,j,k:longint;
q:nod;
begin
assign(input,infile); reset(input); readln(n);
for i:=1 to n do read(str[i]);
for k:=1 to n-1 do begin
readln(i,j);
new(q); q^.inf:=j; q^.next:=a[i]; a[i]:=q;
t[j]:=i;
end;
close(input);
end;
procedure df(x,ind:longint);
var q:nod;
begin
dfn[ind]:=x; q:=a[x];
if(str[x]>0)then sol[x]:=sol[dfn[ind-str[x]]]+1;
while(q<>nil)do begin
df(q^.inf,ind+1); q:=q^.next;
end;
end;
procedure solve;
var i:longint;
begin
i:=1; while(i<n)and(t[i]>0)do inc(i);
sol[i]:=0; df(i,1);
end;
procedure afisare;
var i:longint;
begin
assign(output,outfile); rewrite(output);
for i:=1 to n do write(sol[i],' ');
close(output);
end;
begin
citire; solve; afisare;
end.