Pagini recente » Cod sursa (job #3360238) | Monitorul de evaluare | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #3360155)
#include <algorithm>
#include <cmath>
#include <iostream>
#include <vector>
#include <list>
#include <random>
using namespace std;
const int N = 25e4+1;
int up[20][N], parinte[N];
int n, m;
int main() {
cin >> n >> m;
for (int i = 1,x; i <= n; i++)
{
cin >> x;
parinte[i] = x;
}
for (int i = 1; i <= n; i++)
{
up[0][i] = parinte[i];
}
for (int k = 1; k < 20; k++)
{
for (int i = 1; i <= n; i++)
{
up[k][i] = up[k - 1][up[k - 1][i]];
}
}
for (int i = 1; i <= m; i++)
{
int q,p;
cin >> q >> p;
for (int k = 0; k < 20; k++)
{
if (p & (1 << k))
q = up[k][q];
}
cout << q << '\n';
}
}