Pagini recente » Cod sursa (job #2844941) | Cod sursa (job #2294722) | Cod sursa (job #2949074) | Cod sursa (job #2863600) | Cod sursa (job #3320237)
#include<fstream>
using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
int p, q;
int n, m;
const int LOG = 20;
const int N = 250005;
int parent[N];
int up[N][LOG];
//up v j = al 2^j stramos a lui v
int main() {
cin >> n >> m;
for (int i = 1; i<=n; i++) {
cin >> parent[i];
}
parent[0] = 0;
for (int i = 1; i<=n; i++) {
up[i][0] = parent[i];
for (int j = 1; j<=LOG - 1; j++) {
up[i][j] = up[up[i][j-1]][j-1];
}
}
for (int i =1; i<=m; i++) {
cin >> q >> p;
for (int j = 0; j < LOG; j++) {
if (p & (1 << j)) {
q = up[q][j];
}
}
cout << q << '\n';
}
return 0;
}