Pagini recente » Cod sursa (job #664156) | Cod sursa (job #2645853) | Cod sursa (job #2679837) | Cod sursa (job #2065798) | Cod sursa (job #1256893)
#include <cstdio>
using namespace std;
const int nmax=250005;
const int amax=20;
int n;
int a[nmax];
int d[nmax][amax];
void Dinamica()
{
for(int i=1;i<=n;i++)
d[i][0]=a[i];
for(int i=1;i<=n;i++)
for(int j=1;(1<<j)<nmax;j++)
d[i][j]=d[d[i][j-1]][j-1];
}
int main()
{
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
int m;
scanf("%d%d", &n, &m);
for(int i=1;i<=n;i++)
scanf("%d", &a[i]);
Dinamica();
for(int i=0;i<m;i++)
{
int k, nr;
scanf("%d%d", &k, &nr);
int x=0;
while(nr)
{
if(nr&1)k=d[k][x];
x++;
nr=nr>>1;
}
printf("%d\n", k);
}
return 0;
}