Pagini recente » Cod sursa (job #2811701) | Cod sursa (job #80787) | Cod sursa (job #2665594) | Cod sursa (job #1162037) | Cod sursa (job #2759075)
#include <bits/stdc++.h>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int d[250001][19],t[250001];
int n, m;
int stramos(int nod, int jump)
{
int put = 20;
while(put >= 0)
{
if((1 << put) <= jump)
{
nod = d[nod][put];
jump -= (1 << put);
}
put -= 1;
}
return nod;
}
int main()
{
f >> n >> m;
for(int nod = 1; nod <= n; ++nod)
{
int tata;
f >> tata;
t[nod] = tata;
d[nod][0] = t[nod];
}
for(int i = 1; i < 19; ++i)
{
for(int nod = 1; nod <= n; ++nod)
d[nod][i] = d[d[nod][i-1]][i-1];
}
for(int i = 1; i <= m; ++i)
{
int q, p;
f >> q >> p;
g << stramos(q, p) << '\n';
}
return 0;
}