Pagini recente » Cod sursa (job #2977543) | Cod sursa (job #52451) | Cod sursa (job #670717) | Cod sursa (job #322048) | Cod sursa (job #712200)
Cod sursa(job #712200)
#include <fstream>
#include <vector>
#define MAXN 250010
using namespace std;
int Log[MAXN],n,m,a[MAXN][20],i,j;
int query(int q,int p)
{
if(p==0) return q;
if(q==0) return 0;
q=a[q][Log[p]];
p-=(1<<(Log[p]));
return query(q,p);
}
int main()
{
int p,q;
ifstream fi("stramosi.in");
ofstream fo("stramosi.out");
fi>>n>>m;
for(i=1;i<=n;i++) fi>>a[i][0];
for(i=1;(1<<i)<n;i++)
for(j=1;j<=n;j++)
a[j][i]=a[a[j][i-1]][i-1];
for(i=2;i<=n;i++) Log[i]=Log[i/2]+1;
for(i=1;i<=m;i++)
{
fi>>q>>p;
if(p>n) fo<<"0\n"; else
fo<<query(q,p)<<"\n";
}
return 0;
}