Pagini recente » Cod sursa (job #124638) | Cod sursa (job #1057448) | Cod sursa (job #2821579) | Cod sursa (job #372216) | Cod sursa (job #124730)
Cod sursa(job #124730)
#include<stdio.h>
int t[100001],a[100001],s[100001],n,i,x,y,k[100001],j,nr;
char viz[100001];
void df(int vf,int lg)
{s[lg]=vf;
if(k[vf]) a[vf]=a[s[lg-k[vf]]]+1;
for(int i=1;i<=n;i++)
if(t[i]==vf) df(i,lg+1);}
int main()
{freopen("cerere.in","r",stdin);
freopen("cerere.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%d",&k[i]);
for(j=1;j<n;j++) {scanf("%d %d",&y,&x);t[x]=y;viz[x]=1;}
for(i=1;i<=n;i++) if(!viz[i]) break;
df(i,1);
for(i=1;i<=n;i++)
printf("%d ",a[i]);
fclose(stdout);
return 0;}