Pagini recente » Cod sursa (job #1966694) | Cod sursa (job #52781) | Cod sursa (job #2750602) | Cod sursa (job #696322) | Cod sursa (job #475755)
Cod sursa(job #475755)
#include <cstdio>
#define N 10003
int v[N],ok[N],c[N+10],a[N],b[N],n,i,x=0,y=0,s=0;;
void coad( int k)
{
int p;
if (v[k]!=0)
{ p=y-v[k]; if (p<0) p=N+p+1; ok[k]=c[p];}
v[k]=-1;
for (p=1;p<n;++p)
if (a[p]==k) { ++y; if (y>N) y-=N+1; c[y]=b[p]; coad(b[p]);}
y--;
if (y<0) y=N+p+1;
}
int main()
{
freopen("cerere.in","r",stdin);
freopen("cerere.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;++i) scanf("%d",&v[i]);
for (i=1;i<n;++i)
{
scanf("%d %d",&a[i],&b[i]);
s+=b[i];
}
s=(n*(n+1))/2-s;
c[y]=s;
coad(1);
for (i=1;i<=n;++i)
{
s=i;v[i]=0;
while (ok[s]!=0) ++v[i],s=ok[s];
printf("%d ",v[i]);
}
return 0;}