Cod sursa(job #506984)

Utilizator bugyBogdan Vlad bugy Data 5 decembrie 2010 13:01:10
Problema Cerere Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<stdio.h>
#define dim 100005
using namespace std;

int tati[dim],v[dim],n,x,y,t,i,N,nr;

void stramosi(int k)
{
	k--;
	t=tati[t];
	if(k==0)
		return;
	else stramosi(k);
}


int main()
{
	FILE *f=fopen("cerere.in","r"), *g=fopen("cerere.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
	fscanf(f,"%d",&v[i]);

for(i=1;i<n;i++)
{
	fscanf(f,"%d %d",&x,&y);
	tati[y]=x;	
}

for(i=1;i<=n;i++)
{
	nr=v[i];
	if(nr==0)
		fprintf(g,"0 ");
	else
	{	N=0; t=i;
		while(nr!=0)
		{	N++; 	
			stramosi(nr);
			nr=v[t];		
		}
		fprintf(g,"%d ",N);
	}
}

fprintf(g,"\n");


fclose(f);
fclose(g);

return 0;
}