#include<stdio.h>
#include<stdlib.h>
int r,n,m,o[100005],t[100005],c[100005],p[100005],*g[100005],w[100005],i,j,d[100005],a[100005],b[100005];
char s[1000000];
void D(int i) {
int j;
for(d[i]=1,j=0;j<w[i];j++)
o[m++]=g[i][j],p[g[i][j]]=p[o[m-1-c[g[i][j]]]]+1,D(g[i][j]),m--;
}
int main() {
freopen("cerere.in","r",stdin),freopen("cerere.out","w",stdout),scanf("%d\n",&n),gets(s);
for(i=1,j=0;s[j];j++)
if(s[j]>='0'&&s[j]<='9')
c[i]=c[i]*10+(s[j]-'0');
else
i++;
for(i=1;i<n;i++)
scanf("%d%d",a+i,b+i),w[a[i]]++,t[b[i]]=a[i];
for(i=1;i<=n;p[i]=-1,w[i++]=0)
g[i]=(int*)malloc(w[i]*sizeof(int));
for(i=1;i<n;i++)
g[a[i]][w[a[i]]++]=b[i];
for(j=i=1;i<=n&&j;i++)
if(!t[i])
r=i,j=0;
o[m++]=r,p[r]=0,D(r);
for(i=1;i<=n;i++)
printf("%d ",p[i]);
}