Pagini recente » Cod sursa (job #2962620) | Cod sursa (job #343618) | Cod sursa (job #3334582) | Cod sursa (job #862400) | Cod sursa (job #3310648)
#include <fstream>
#include <vector>
using namespace std;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
const int nmax = 250000, lgmax = 18;
int n, nrq, node, topp, dpfather[lgmax][nmax + 2];
int main(){
in>>n>>nrq;
for(int i = 1; i <= n; i++)
in>>dpfather[0][i];
for(int p = 1; (1 << p) <= n; p++){
for(int i = 1; i <= n; i++)
dpfather[p][i] = dpfather[p - 1][dpfather[p - 1][i]];
}
for(int i = 1; i <= nrq; i++){
in>>node>>topp;
for(int b = 0; (1 << b) <= topp; b++){
if(topp & (1 << b))
node = dpfather[b][node];
}
out<<node<<"\n";
}
return 0;
}