Pagini recente » Cod sursa (job #1961629) | Arhiva de probleme | Cod sursa (job #232589) | Cod sursa (job #673530) | Cod sursa (job #201182)
Cod sursa(job #201182)
var v,a,b,c,d,e,g,s,r:array[0..100100]of longint;
n,i,j,k:longint;
f:text;
procedure cerere(x,o:longint);
var y:longint;
begin
if v[x]=0 then r[x]:=0
else r[x]:=s[o-v[x]]+1;
s[o]:=r[x];
for y:=c[x-1]+1 to c[x] do
cerere(g[y],o+1);
end;
begin
assign(f,'cerere.in');
reset(f);
readln(f,n);
for i:=1 to n do
read(f,v[i]);
for i:=1 to n-1 do
begin
read(f,a[i],b[i]);
d[b[i]]:=1;
c[a[i]]:=c[a[i]]+1;
end;
close(f);
for i:=1 to n do
c[i]:=c[i]+c[i-1];
for i:=1 to n do
begin
if(d[i]=0)then k:=i;
e[i]:=c[i-1]+1;
end;
for i:=1 to n-1 do
begin
g[e[a[i]]]:=b[i];
e[a[i]]:=e[a[i]]+1;
end;
cerere(k,1);
assign(f,'cerere.out');
rewrite(f);
for i:=1 to n do
write(f,r[i],' ');
writeln(f);
close(f);
end.