Pagini recente » Cod sursa (job #402259) | Cod sursa (job #1229814) | Cod sursa (job #1137735) | Cod sursa (job #1036491) | Cod sursa (job #398425)
Cod sursa(job #398425)
#include <fstream>
#include <vector>
#include <iostream>
using namespace std;
int main(){
int n,m;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
in>>n>>m;
vector<vector<int> > v(n+1,vector<int>(21,0));
for(int i=0;i<n;i++) in>>v[i+1][0];
for(int k=1;k<21;k++){
for(int i=1;i<=n;i++){
v[i][k]=v[v[i][k-1]][k-1];
}
}
for(int i=0;i<m;i++){
int p,q;
in>>q>>p;
//al p lea stramos a lui q
int putere=1;
while(putere<=p)putere*=2;
putere/=2;
while(putere>=0 and p){
q=v[q][putere-1];
p-=putere;
while(putere>p)putere/=2;
}
out<<q<<"\n";
}
}