Pagini recente » Cod sursa (job #410689) | Cod sursa (job #699162) | Cod sursa (job #2705039) | Cod sursa (job #236673) | Cod sursa (job #267185)
Cod sursa(job #267185)
#include<stdio.h>
#define Nmax 101000
long n,t[Nmax],vec[Nmax],nx[Nmax];
struct elem
{
long inf;
elem *urm;
}*a[Nmax];
void citire()
{
long i,tat,fiu;
freopen("cerere.in","r",stdin);
scanf("%ld",&n);
for(i=1;i<=n;i++)
scanf("%ld",&nx[i]);
elem *p;
for(i=1;i<=n-1;i++)
{
scanf("%ld %ld",&tat,&fiu);
t[fiu]=tat;
p=new elem;
p->inf=fiu;
p->urm=a[tat];
a[tat]=p;
}
fclose(stdin);
}
void parcurg(long x,long niv)
{
elem *p;
vec[niv]=x;
if(nx[x]!=0)
nx[x]=nx[vec[niv-nx[x]]]+1;
else
nx[x]=0;
for(p=a[x];p;p=p->urm)
parcurg(p->inf,niv+1);
}
void afisare()
{
freopen("cerere.out","w",stdout);
long i;
for(i=1;i<=n;i++)
{
printf("%ld ",nx[i]);
}
printf("\n");
fclose(stdout);
}
int main()
{
long i;
citire();
parcurg(1,0);
afisare();
return 0;
}