Cod sursa(job #215709)

Utilizator ciorile.chioareBogatu Adrian ciorile.chioare Data 20 octombrie 2008 15:47:01
Problema Stramosi Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>
#define N 250250
 
int n,m,q,p,a[18][N];
void scr();
int calcul(int p,int q)
{
	scr();
	for(int j=0 ; p ; ++j,p>>=1)
		if(p&1)
			q=a[j][q];
	return q;
}
void scr()
{
	for(int j=1;j<18;j++)
	{
		for(int i=1;i<=n;i++)
		{
			if(a[j-1][i])
				a[j][i]=a[j-1][ a[j-1][i] ];
		}
	}
}
void citire()
{
	int i;
	
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++)
	{
		scanf("%d",&a[0][i]);
	}
	for(i=1;i<=m;i++)
	{
		scanf("%d%d",&q,&p);
		/*
		for(int j=1;j<=p;j++)
		{
			q=v[q];
		}
		*/
		printf("%d\n",calcul(p,q));
	}
}

int main()
{
	freopen("stramosi.in","r",stdin);
	freopen("stramosi.out","w",stdout);
	citire();

	return 0;
}