Pagini recente » Cod sursa (job #769603) | Cod sursa (job #5350) | Cod sursa (job #1361778) | Cod sursa (job #1975353) | Cod sursa (job #3134377)
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;
int main() {
ifstream inputFile("stramosi.in");
ofstream outputFile("stramosi.out");
int n, m;
inputFile >> n >> m;
vector<vector<int>> ancestors(n + 1, vector<int>(19));
for (int i = 1; i <= n; i++) {
inputFile >> ancestors[i][0];
}
for (int j = 1; j < 19; j++) {
for (int i = 1; i <= n; i++) {
ancestors[i][j] = ancestors[ancestors[i][j - 1]][j - 1];
}
}
for (int k = 0; k < m; k++) {
int p, q;
inputFile >> p >> q;
for (int i = 18; i >= 0; i--) {
if (q >= (1 << i)) {
p = ancestors[p][i];
q -= (1 << i);
}
}
outputFile << p << "\n";
}
inputFile.close();
outputFile.close();
return 0;
}