Cod sursa(job #557545)

Utilizator candaleCandale Andrei candale Data 16 martie 2011 18:22:53
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<fstream>
#include<vector>
using namespace std;
ifstream fin ("stramosi.in");
ofstream fout ("stramosi.out");
int a[21][250001];
int n,x,y,m;
void citire()
{
	fin>>n>>m;
	//a.resize(n+1);
	//a[0].resize(n+1);
	for(int i=1;i<=n;i++)
	{
		//a[i].resize(n+1);
		fin>>a[0][i];
	}
}
void din()
{
	int ok=1,niv=0;
	while(ok==1)
	{
		ok=0;
		niv++;
		for(int i=1;i<=n;i++)
		{
			a[niv][i]=a[niv-1][a[niv-1][i]];
			if(a[niv-1][a[niv-1][i]]!=0)
				ok=1;
		}
	}
}	
void rez()
{
	for(int i=1;i<=m;i++)
	{
		fin>>x>>y;
		int niv=1;
		while(y!=0)
		{
			if(y%2==1)
				x=a[niv-1][x];
			y=y/2;
			niv++;
		}
		fout<<x<<'\n';
	}
}
int main ()
{
	citire();
	din();
	rez();
	return 0;
}