Cod sursa(job #64876)

Utilizator bogdanzZaharia Bogdan bogdanz Data 5 iunie 2007 22:40:17
Problema Stramosi Scor 30
Compilator c Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <stdio.h>

#define MAX 10000
int p[30000][MAX];
int n,m;

int stramos(int nod, int rang){
	if(p[rang][nod]) return p[rang][nod];
	if(rang == 1) return nod;
	if(p[1][nod] < 0) return -1;
	p[rang][nod] = stramos(p[1][nod], rang-1);
	return p[rang][nod];
}

int main(){	
	int i, nod, rang, s;
	freopen("stramosi.in", "rt", stdin);
	freopen("stramosi.out", "wt", stdout);	
	scanf("%d %d", &n, &m);
	for(i = 1; i <= n; i++){
		scanf("%d", &p[1][i]);
		if(!p[1][i]) p[1][i]--;
	}
	for(i = 0; i < m; i++){
		scanf("%d %d", &nod, &rang);
		s = stramos(nod, rang);
		if(s < 0) s++;
		printf("%d\n", s);
	}
	return 0;

}