Problem Statement
Planets Queries I
Implementation
const ll mx = 32, N = 2e5 + 1;
ll dp[N][mx];
ll n, q;
void solve() {
cin >> n >> q;
rep(i, n) cin >> dp[i][0], --dp[i][0];
FOR(i, 1, mx - 1) {
rep(j, n) {
ll half_child = dp[j][i - 1];
dp[j][i] = dp[half_child][i - 1];
}
}
while (q--) {
ll x, k;
cin >> x >> k, --x;
FORR(j, mx - 1, 0) {
if ((1LL << j) & k) x = dp[x][j];
}
cout << x + 1 << "\n";
}
}