Pagini recente » Cod sursa (job #1020826) | Cod sursa (job #953600) | Cod sursa (job #2466675) | Cod sursa (job #142280) | Cod sursa (job #2753685)
#include <bits/stdc++.h>
#define NMAX 250010
using namespace std;
ifstream fin("stramosi.in");
ofstream gout("stramosi.out");
int tata[NMAX][30], n, m, a, poz;
int search_ancestor(int a, int poz)
{
int index = 0;
while (poz)
{
if (poz % 2)
a = tata[a][index];
poz /= 2;
++index;
}
return a;
}
int main()
{
fin >> n >> m;
for(int i = 1 ; i <= n ; ++i)
{
fin >> a;
tata[i][0] = a;
}
int lg2_din_n = int(log2(n));
for (int i = 1 ; i <= lg2_din_n ; ++i)
for (int j = 1 ; j <= n ; ++j)
tata[j][i] = tata[tata[j][i - 1]][i - 1];
for (int i = 1 ; i <= m ; ++i)
{
fin >> a >> poz;
gout << search_ancestor(a, poz) << '\n';
}
return 0;
}