Pagini recente » Solutii preONI 2007, Runda 2 | Cod sursa (job #33062) | Cod sursa (job #1281523) | Cod sursa (job #2180528) | Cod sursa (job #3299215)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int a[20][250001];
int main() {
int N, M;
fin >> N >> M;
for (int i = 1; i <= N; i++) {
fin >> a[0][i];
}
for (int j = 1; j < 20; j++) {
for (int i = 1; i <= N; ++i) {
a[j][i] = a[j - 1][i] ? a[j - 1][a[j - 1][i]] : 0;
}
}
for (int i = 0; i < M; i++) {
int Q, P;
fin >> Q >> P;
for (int j = 0; j < 20 && Q; j++) {
if (P & (1 << j)) {
Q = a[j][Q];
}
}
fout << Q << '\n';
}
return 0;
}