Cod sursa(job #2889914)

Utilizator cyg_TheoPruteanu Theodor cyg_Theo Data 13 aprilie 2022 19:01:34
Problema Stramosi Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>

using namespace std;

typedef long long ll;
const int NMAX = 250005;
const int LMAX = 18;

int dp[NMAX][LMAX];

int main(){
		
	freopen("stramosi.in", "r", stdin);
	freopen("stramosi.out", "w", stdout);

	int n,q;
	scanf("%d%d", &n, &q);

	dp[1][0] = 0;
	for(int i=1; i<=n; ++i)
		scanf("%d", &dp[i][0]);

	for(int l=1; l<LMAX; ++l)
		for(int i=1; i<=n; ++i)
			dp[i][l] = dp[dp[i][l-1]][l-1];

	int x,k;
    for(; q; q--){

		scanf("%d%d", &x, &k);

		for(int l=0; k && l<LMAX; ++l)
			if(k&(1<<l)){
				x = dp[x][l];
				k -= (1<<l);
			}

		if(x)
			printf("%d\n", x);
		else
			printf("0\n");
	}	

	return 0;
}