Pagini recente » Cod sursa (job #68392) | Cod sursa (job #3260539) | Cod sursa (job #1139303) | Cod sursa (job #569586) | Cod sursa (job #159650)
Cod sursa(job #159650)
#include <stdio.h>
#define NM 100001
long t[NM],v[NM],x[NM],n;
long det(long k)
{long s;
if(v[k]!=-1) return v[k];
s=k;
while(x[k]>0)
{s=t[s];
x[k]--;
}
return det(s)+1;
}
int main()
{long i,z,y;
freopen("cerere.in","r",stdin);
freopen("cerere.out","w",stdout);
scanf("%ld",&n);
for (i=1;i<=n;i++) v[i]=-1;
for (i=1;i<=n;i++) scanf("%ld",&x[i]);
for (i=1;i<n;i++)
{scanf("%ld %ld",&y,&z);
t[z]=y;
}
for (i=1;i<=n;i++) if(x[i]==0) v[i]=0;
for (i=1;i<=n;i++) if(v[i]==-1) v[i]=det(i);
for (i=1;i<=n;i++) printf("%ld ",v[i]);
return 0;
}