Pagini recente » Cod sursa (job #2069960) | Cod sursa (job #150336) | Cod sursa (job #335360) | Cod sursa (job #131313) | Cod sursa (job #1518597)
// pentru fiecare nod i se tin toti stramosii sai aflati
// la distanta putere de 2
#include <fstream>
#define DIMN 250010
using namespace std;
int n, q, i, j, node, ancestor;
int D[19][DIMN];
int main () {
ifstream fin ("stramosi.in");
ofstream fout("stramosi.out");
fin>>n>>q;
for (i=1;i<=n;i++) {
fin>>D[0][i];
}
for (i=1; (1<<i) <= 18; i++)
for (j=1;j<=n;j++)
D[i][j] = D[i-1][ D[i-1][j] ];
for (i=1;i<=q;i++) {
fin>>node>>ancestor;
int p = 0;
while (ancestor) {
if (ancestor % 2 == 1) {
node = D[p][node];
}
p++;
ancestor /= 2;
}
fout<<node<<"\n";
}
return 0;
}