Pagini recente » Cod sursa (job #1058495) | Cod sursa (job #3002783) | Cod sursa (job #363080) | Cod sursa (job #1973150) | Cod sursa (job #2671346)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, q, tata[250005], stra[250005][20];
int main()
{
fin >> n >> q;
for(int i=1; i<=n; i++)
{
fin >> tata[i];
stra[i][0]=tata[i];
}
for(int i=1; i<=17; i++)
for(int j=2; j<=n; j++)
stra[j][i]=stra[stra[j][i-1]][i-1];
// for(int i=1; i<=n; i++)
// {
// for(int j=0; j<5; j++) fout << stra[i][j] << " ";
// fout << "\n";
// }
for(int i=1; i<=q; i++)
{
int x, k, num=0;
fin >> x >> k;
while(k && x)
{
if(k%2)
x=stra[x][num];
k/=2;
num++;
}
fout << x << "\n";
}
return 0;
}