Cod sursa(job #392447)

Utilizator ProcopliucProcopliuc Adrian Procopliuc Data 7 februarie 2010 15:35:05
Problema Cerere Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
# include <fstream.h>
ifstream f ("cerere.in");
ofstream g ("cerere.out");
int c[100005],t[100000],v[100000],x,y,i,j,n,k;

  struct nod 
  {
	  int info;
	  nod *urm;
  }*p,*a[100005];

  
   void df (int x)
   {
	   nod *p;
	   k++;
	   v[k]=x;
	   if (c[x]!=0)
		   t[x]=v[k-c[x]];
	   p=a[x];
	   while (p)
	   {
	   df(p->info);
	   p=p->urm;
	   }
	   k--;
   }



int main ()
{
	f>>n;
	for (i=1;i<=n;i++)
		f>>c[i];
	
	for (i=1;i<n;i++)
	{
		f>>x>>y;
		p=new nod;
		p->info=y;
		p->urm=a[x];
		a[x]=p;
	}
	
	df (1);
		
	
	for (i=1;i<=n;i++)
	{
		k=0;
		if (c[i])
		{
		x=t[i];
		k++;
		while (t[x])
			{
				x=t[x];
				k++;
	    	}
		}
			g<<k<<" ";
	}
	return 0;
}