Cod sursa(job #4081)

Utilizator rapidu36Victor Manz rapidu36 Data 30 decembrie 2006 11:50:57
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include<stdio.h>
#define N 250001
#define M 300001
#define L 18
int n,m,a[N][L];
int stra(int q,int p){
	int x=q,r,j=0;
	while(p){
		r=p&1;
		if(r)
			x=a[x][j];
		j++;
		p>>=1;
	}
	return x;
}
int main(){
	FILE *in=fopen("stramosi.in","r"),*out=fopen("stramosi.out","w");
	int i,j,p,q;
	fscanf(in,"%d%d",&n,&m);
	for(i=1;i<=n;i++)
		fscanf(in,"%d",&a[i][0]);
	for(j=1;j<L;j++)
		for(i=1;i<=n;i++)
			a[i][j]=a[a[i][j-1]][j-1];
	for(i=0;i<m;i++){
		fscanf(in,"%d%d",&q,&p);
		fprintf(out,"%d\n",stra(q,p));
	}
	fclose(in);
	fclose(out);
	return 0;
}