Pagini recente » Cod sursa (job #2342539) | Cod sursa (job #3169408) | Cod sursa (job #529361) | Borderou de evaluare (job #1330291) | Cod sursa (job #475777)
Cod sursa(job #475777)
#include <cstdio>
#define N 100004
int c[N],v[N],sol[N],x[N],y[N],lc[N],ok[N];
int main()
{
int n,m=1,i,k=0,j;
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",&x[i],&y[i]);k+=y[i];}
k=(n+1)*n/2-k;
c[1]=k;lc[1]=0;
while (m>0)
{
k=c[m];
for (++lc[k];lc[k]<n;++lc[k])
if ((x[lc[k]]==k) && (ok[y[lc[k]]]==0))
{
++m;
ok[y[lc[k]]]=0;
c[m]=y[lc[k]];
lc[c[m]]=0;
if (v[c[m]]>0) sol[c[m]]=sol[c[m-v[c[m]]]]+1;
break;
}
if (lc[c[m]]==n) --m;
}
for (i=1;i<=n;++i)
printf("%d ",sol[i]);
return 0;}