Pagini recente » Cod sursa (job #1055243) | Cod sursa (job #2612660) | Cod sursa (job #2444509) | Cod sursa (job #3274224) | Cod sursa (job #349666)
Cod sursa(job #349666)
#include<stdio.h>
int n,m,i,j,cnt,s[18][250002],P,Q,DQ,ss,L;
void read(),solve();
int main()
{
read();
solve();
return 0;
}
void read()
{
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d",&s[0][i]);
if(s[0][i])cnt++;
}
}
void solve()
{
i=0;
for(;cnt;)
{
i++;
cnt=0;
for(j=1;j<=n;j++)
if(s[i-1][j])
{
ss=s[i-1][s[i-1][j]];
if(ss){cnt++;s[i][j]=ss;}
}
}
for(;m;m--)
{
scanf("%d%d",&P,&Q);
for(L=0,DQ=1;Q;L++,DQ<<=1)
if(Q&DQ)
{
Q-=DQ;P=s[L][P];
}
printf("%d\n",P);
}
}