Pagini recente » Cod sursa (job #687520) | Cod sursa (job #615328) | Cod sursa (job #2271619) | Cod sursa (job #1951938) | Cod sursa (job #3128981)
#include <fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int N, M, v[250100], a[30][250100];
void generare() {
for (int i = 1; i <= N; i++)
a[1][i] = v[i];
for (int i = 2; (1 << (i - 1)) <= N; i++) {
for (int j = 1; j <= N; j++) {
a[i][j] = a[i - 1][a[i - 1][j]];
}
}
};
int query(int p, int q) {
int nod = p;
for (int i = 1; i <= 20; i++) {
if (q & (1 << (i - 1))) {
nod = a[i][nod];
}
}
return nod;
}
int main()
{
fin >> N >> M;
for (int i = 1; i <= N; i++)
fin >> v[i];
generare();
for (int i = 1; i <= M; i++) {
int p, q;
fin >> p >> q;
fout << query(p, q) << '\n';
}
return 0;
}