Cod sursa(job #685704)

Utilizator CBogdanCiobanu Bogdan CBogdan Data 21 februarie 2012 09:14:33
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<cstdio>
using namespace std;

int N,M,Q,P,S,i,j,LG[250010],stra[250010][20];

void read(),solve();

int main()
{
	read();
	solve();
	
	return 0;
}

void read()
{
	freopen("stramosi.in","r",stdin);
	freopen("stramosi.out","w",stdout);
	scanf("%d%d",&N,&M);
	scanf("%d",&stra[1][0]);
	for(i=2;i<=N;i++)
	{
		scanf("%d",&stra[i][0]);
		LG[i]=LG[i>>1]+1;
	}
	for(j=1;(1<<j)<=N;j++)
	{
		for(i=1;i<=N;i++)
		{
			stra[i][j]=stra[stra[i][j-1]][j-1];
		}
	}
	
}

void solve()
{
	for(;M--;)
	{
		scanf("%d%d",&Q,&P);
		while(P)
		{
			j=LG[P];
			Q=stra[Q][j];
			S=Q;
			P-=(1<<j);
		}
		printf("%d\n",S);
	}
}