Pagini recente » Cod sursa (job #2371224) | Cod sursa (job #2634908) | Cod sursa (job #2402402) | Cod sursa (job #483686) | Cod sursa (job #1231798)
#include <cstdio>
#include <cmath>
#define logN 19
#define N 250001
using namespace std;
int parent[logN][N], n, m, P, Q, v[100];
void solve(){
int r = P;
int t = 0;
while(r){
v[t++] = r % 2;
r /= 2;
}
int nod = Q;
for(int i = t - 1; i >= 0; --i)
if(v[i])
nod = parent[i][nod];
printf("%d\n", nod);
}
int main(){
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
scanf("%d %d", &n, &m);
for(int i = 1; i <= n; ++i)
scanf("%d ", &parent[0][i]);
for(int k = 1; k <= 18; ++k)
for(int j = 1; j <= n; ++j)
parent[k][j] = parent[k-1][parent[k-1][j]];
for(int i = 1; i <= m; ++i){
scanf("%d %d ", &Q, &P);
solve();
}
}