Pagini recente » Cod sursa (job #1593122) | Cod sursa (job #1151805) | Cod sursa (job #2072210) | Cod sursa (job #2766137) | Cod sursa (job #2862102)
#include <fstream>
#define NMAX 250003
#define LOG 18
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int N, M;
int Fathers[NMAX];
int up[NMAX][LOG];
int main()
{
fin >> N >> M;
for(int i = 1; i <= N; i++) {
int f;
fin >> f;
Fathers[i] = f;
}
for(int i = 1; i <= N; i++) {
up[i][0] = Fathers[i];
}
for(int j = 1; j <= LOG; j++) {
for(int i = 1; i <= N; i++) {
up[i][j] = up[up[i][j - 1]][j - 1];
}
}
for(int i = 1; i <= M; i++) {
int nod, nr;
fin >> nod >> nr;
for(int j = 0; j <= LOG; j++) {
if(nr & (1 << j)) {
nod = up[nod][j];
}
}
fout << nod << '\n';
}
return 0;
}