Pagini recente » Cod sursa (job #508757) | Cod sursa (job #2592331) | Cod sursa (job #587924) | Cod sursa (job #573897) | Cod sursa (job #1393091)
#include <stdio.h>
int tata[100001];
int x[100001];
int dest[100001];
int n;
int main()
{
freopen ("cerere.in","r",stdin);
freopen ("cerere.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&x[i]);
int p1,p2;
for(int i=1;i<n;i++)
{
scanf("%d%d",&p1,&p2);
tata[p2]=p1;
}
for(int i=1;i<=n;i++)
{
if(x[i]==0) dest[i]=0;
else
{
dest[i]=i;
for(int j=1;j<=x[i];j++)
{
dest[i]=tata[dest[i]];
}
}
}
for(int i=1;i<=n;i++)
{
int counter=0;
int nod=i;
if(dest[i]!=0)
{
while(dest[nod]!=0)
{
nod=dest[nod];
counter++;
}
}
printf("%d ",counter);
}
}