Pagini recente » Monitorul de evaluare | Cod sursa (job #577053) | Cod sursa (job #2775981) | preONI 2008 - Runda 1, Clasele 5-8 | Cod sursa (job #248718)
Cod sursa(job #248718)
# include <stdio.h>
# define nmax 100001
long A[nmax][100],N,st[nmax],K=-1,num[nmax],k[nmax],S[nmax];
void df(long n)
{
int i;
st[++K]=n;
if (k[n]) num[n]=num[K-k[n]]+1;
for (i=1;i<=A[n][0];i++)
df(A[n][i]);
--K;
}
int main(){
long i,x,s,y;
freopen("cerere.in", "r", stdin);
freopen("cerere.out", "w", stdout);
scanf("%ld",&N);
for (i=1;i<=N;i++)
scanf("%ld",&k[i]);
for (i=1;i<N;i++){
scanf("%ld %ld",&x,&y);
S[y]=1;
A[x][0]++;
A[x][A[x][0]]=y;
}
for (i=1;i<=N;i++)
if (S[i]==0) {s=i; break;}
df(s);
for (i=1;i<=N;i++)
printf("%ld ",num[i]);
return 0;
}