Pagini recente » Cod sursa (job #830503) | Cod sursa (job #1906307) | Cod sursa (job #2544667) | Cod sursa (job #1382093) | Cod sursa (job #3207593)
#include <fstream>
using namespace std;
const int NMAX = 250000;
const int LOG = 20;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
int up[NMAX + 2][LOG + 2];
int query(int a, int p) {
for(int j = LOG - 1; j >= 0; j--) {
if(p & (1 << j))
a = up[a][j];
}
return a;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n, q;
cin >> n >> q;
for(int i = 1; i <= n; i++)
cin >> up[i][0];
for(int i = 1; i <= n; i++) {
for(int j = 1; j < LOG; j++) {
up[i][j] = up[up[i][j - 1]][j - 1];
}
}
while(q--) {
int a, p;
cin >> a >> p;
cout << query(a, p) << '\n';
}
return 0;
}