Pagini recente » Cod sursa (job #932082) | Cod sursa (job #2939607) | Cod sursa (job #96001) | Cod sursa (job #1458467) | Cod sursa (job #3297491)
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 250'000;
const int LOG = 18;
static int up[MAXN + 1][LOG + 1];
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, m;
fin >> n >> m;
for (int v = 1; v <= n; ++v)
fin >> up[v][0];
for (int j = 1; j <= LOG; ++j)
for (int v = 1; v <= n; ++v) {
int mid = up[v][j - 1];
up[v][j] = mid ? up[mid][j - 1] : 0;
}
while (m--) {
int q, p;
fin >> q >> p;
for (int j = LOG; j >= 0 && q; --j)
if (p & (1 << j))
q = up[q][j];
fout << q << '\n';
}
return 0;
}