Pagini recente » Cod sursa (job #2979724) | Cod sursa (job #2628012) | Cod sursa (job #2659035) | Cod sursa (job #1676608) | Cod sursa (job #3228386)
#include <iostream>
using namespace std;
//dp[j][i]= fac saltul de la nodul la nodul 2^j+1
const int MAXVAL=250000;
const int putere=17;
int dp[putere+1][MAXVAL+1],log_2[MAXVAL+1];
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>dp[0][i];
}
for(int j=1;j<=log_2[n];j++){
for(int i=1;i<=n;i++){
dp[j][i]=dp[j-1][dp[i][j-1]];
}
}
int nod,put;
for(int i=1;i<=m;i++){
cin>>nod>>put;
while(put){
nod=dp[log_2[put]][nod];
put-=(1<<log_2[put]);
}
cout<<nod<<'\n';
}
}