Pagini recente » Cod sursa (job #19872) | Cod sursa (job #1602317) | Cod sursa (job #1893540) | Cod sursa (job #1374057) | Cod sursa (job #139112)
Cod sursa(job #139112)
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.