Pagini recente » Cod sursa (job #1283191) | Cod sursa (job #74980) | Cod sursa (job #379488) | Cod sursa (job #631196) | Cod sursa (job #2837406)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("stramosi.in");
ofstream fout ("stramosi.out");
/**
d[i][j] = stramosul lui j aflat la distanta 2^i
*/
int n, Q;
int d[19][250005];
int main()
{
int i, j;
fin >> n >> Q;
for (int i = 1; i <= n; i++)
fin >> d[0][i]; /// stramosul aflat la distanta 1 fata
/// de i este chiar tatal lui i
for (i = 1; i <= 18; i++)
for (j = 1; j <= n; j++)
d[i][j] = d[i - 1][d[i - 1][j]];
while (Q--)
{
int nod ,dist;
fin >> nod >> dist;
int expo = 0;
while (dist > 0)
{
if (dist % 2 == 1)
nod = d[expo][nod];
expo++;
dist /= 2;
}
fout << nod << "\n";
}
return 0;
}