Pagini recente » Cod sursa (job #2504964) | Cod sursa (job #3229728) | Cod sursa (job #1674126) | Cod sursa (job #70179) | Cod sursa (job #3285831)
#include <iostream>
#include <random>
#include <fstream>
#include <stack>
#include <bitset>
using namespace std;
int dp[19][250001]; ///dp[i][j] = al 2^i-lea stramos al nodului j
int main() {
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, q;
fin >> n >> q;
for (int i = 1; i <= n; i++)
fin >> dp[0][i];
for (int i = 1; (1 << i) <= n; i++)
for (int j = 1; j <= n; j++)
dp[i][j] = dp[i - 1][dp[i - 1][j]];
while (q--)
{
int p, x;
fin >> x >> p;
for (int i = 0; (1 << i) <= p; i++)
if ((1 << i) & p)
x = dp[i][x];
fout << x << "\n";
}
return 0;
}