Pagini recente » Cod sursa (job #1221080) | Cod sursa (job #2397173)
#include <bits/stdc++.h>
using namespace std;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
#define NMAX 250004
#define LMAX 30
int n,m,father[LMAX][NMAX],Lg[NMAX],depth[NMAX];
int papa(int node,int x){
for(int i=0;(1<<i)<=x;i++){
if(x&(1<<i))
node=father[i][node];
}
return node;
}
int main()
{
in>>n>>m;
for(int i=1;i<=n;i++){
int a;
in>>a;
father[0][i]=a;
}
for(int i=1;i<=n;i++){
for(int k=1;k<=25;k++)
father[k][i]=father[k-1][father[k-1][i]];
}
for(int i=1;i<=m;i++){
int st,dr;
in>>st>>dr;
out<<papa(st,dr)<<endl;
}
return 0;
}