Cod sursa(job #215696)

Utilizator ciorile.chioareBogatu Adrian ciorile.chioare Data 20 octombrie 2008 15:34:48
Problema Stramosi Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <stdio.h>
#define N 250250
 
int n,m,v[N],q,p,a[N][20];
void scr();
int calcul(int p,int q)
{
	scr();
	for(int j=0 ; p ; ++j,p/=2)
		if(p%2)
			q=a[q][j];
	return q;
}
void scr()
{
	for(int j=1;j<20;j++)
	{
		for(int i=1;i<=n;i++)
		{
			a[i][j]=a[ a[i][j-1] ][j-1];
		}	
	}
}
void citire()
{
	int i;
	
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++)
	{
		scanf("%d",&a[i][0]);
	}
	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()
{
	int i,j;
	freopen("stramosi.in","r",stdin);
	freopen("stramosi.out","w",stdout);
	citire();

	return 0;
}