Cod sursa(job #712187)

Utilizator dicu_dariaDaria Dicu dicu_daria Data 13 martie 2012 09:36:46
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
#include <fstream>
#include <vector>
#define MAXN 250010
using namespace std;
int Log[MAXN],n,m,a[MAXN][20],i,j;
int query(int q,int p)
{
	if(p==0) return q;
	q=a[q][Log[p]];
	p-=(1<<(Log[p]));
	return query(q,p);
}
int main()
{
	int p,q;
	ifstream fi("stramosi.in");
	ofstream fo("stramosi.out");
	fi>>n>>m;
	for(i=1;i<=n;i++) fi>>a[i][0];
	for(i=1;(1<<i)<MAXN;i++)
		for(j=1;j<=n;j++)
		a[j][i]=a[a[j][i-1]][i-1];
	for(i=2;i<=MAXN;i++) Log[i]=Log[i/2]+1;
	for(i=1;i<=m;i++)
	{
		fi>>q>>p;
		fo<<query(q,p)<<"\n";
	}
	return 0;
}