Pagini recente » Cod sursa (job #3252742) | Cod sursa (job #684973) | Cod sursa (job #2607219) | Cod sursa (job #150344) | Cod sursa (job #460245)
Cod sursa(job #460245)
type pnod=^nod;
nod=record
info:longint;
urm:pnod;
end;
var q:pnod;
v:array[1..100001]of pnod;
copil:array[1..100001]of boolean;
k,sol,s:array[1..100001]of longint;
i,a,b,n:longint;
procedure dfs(nod,niv:longint);
var q:pnod;
begin
s[niv]:=nod;
if k[nod]<>0 then sol[nod]:=sol[s[niv-k[nod]]]+1;
q:=v[nod];
while q<>nil do begin
dfs(q^.info,niv+1);
q:=q^.urm;
end;
end;
begin
assign(input,'cerere.in'); reset(input);
assign(output,'cerere.out');rewrite(output);
read(n);
for i:=1 to n do read(k[i]);
fillchar(copil,sizeof(copil),false);
for i:=1 to n-1 do begin
read(a,b);
new(q);
q^.info:=b;
q^.urm:=v[a];
v[a]:=q;
copil[b]:=true;
end;
i:=1;
while i<=n do
if copil[i] then inc(i)
else begin
dfs(i,1);
inc(i);
end;
for i:=1 to n do write(sol[i],' ');
close(output);
end.