Cod sursa(job #751615)

Utilizator geniucosOncescu Costin geniucos Data 26 mai 2012 14:31:30
Problema Cerere Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<cstdio>
using namespace std;
int a1,b1,n,ul,nr,i,str[100002],tata[100002],k[100002];
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(i=1;i<n;i++)
{
	scanf("%d",&a1);
	scanf("%d",&b1);
	tata[b1]=a1;
}
for(i=1;i<=n;i++)
if(k[i]!=0)
{
	nr=0;
	ul=i;
	while(1)
	{
		ul=tata[ul];
		nr++;
		if(nr==k[i]) break;
	}
	str[i]=ul;
}
for(i=1;i<=n;i++)
{
	if(k[i]==0) printf("0 ");
	else
	{
		nr=0;
		ul=i;
		while(1)
		{
			ul=str[ul];
			nr++;
			if(k[ul]==0) break;
		}
		printf("%d ",nr);
	}
}
printf("\n");
return 0;
}