Cod sursa(job #766133)

Utilizator dutzulBodnariuc Dan Alexandru dutzul Data 10 iulie 2012 14:00:45
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<fstream>
#define LE 250500
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int father[LE],prev[LE],j,n,q,level,M[LE][20],nod,viz[LE],i;
void setM(int pos)
{
	prev[father[pos]]=pos;
	
	if (prev[pos]!=0)
	{
	  	for(j=0;j<=20&&M[prev[pos]][j]!=0;++j) 
			M[pos][j]=father[M[prev[pos]][j]];
	
	return;  
	}
      
	int lev_need=1,lev=0,k=pos,pe=0;
	
	while (father[k]!=0)
		{
		   ++lev;
		   k=father[k];
	 	   
		   if (lev==lev_need) 
			   M[pos][pe++]=k,lev_need*=2;		   
	    } 
}
int main()
{
	f>>n>>q;
	for(i=1;i<=n;++i)
		f>>father[i];
	
	for(i=n;i>=1;--i)
       if (viz[i]!=-1)
	     setM(i);
	
	for(i=1;i<=q;++i) 
	{
		
		f>>nod>>level;
	}
	return 0;
}