Pagini recente » Cod sursa (job #1332020) | Cod sursa (job #1703854) | Cod sursa (job #343100) | Cod sursa (job #296755) | Cod sursa (job #1848027)
#include <iostream>
#include <fstream>
#define MAX 250005
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n,m,dp[20][MAX],a,b;
void build(){
for(int i=1;i<=n;++i)
fin>>dp[0][i];
for(int k=1;k<=18;++k)
for(int i=1;i<=n;++i)
dp[k][i]=dp[k-1][dp[k-1][i]];
}
int query(int k, int nod){
for(int i=0;(1<<i)<=k;i++)
if(k&(1<<i))
nod=dp[i][nod];
return nod;
}
int main()
{
fin>>n>>m;
build();
for(int i=1;i<=m;++i){
fin>>a>>b;
fout<<query(b,a)<<'\n';
}
return 0;
}