Pagini recente » Cod sursa (job #1443561) | Cod sursa (job #3234546) | Cod sursa (job #13097) | Cod sursa (job #1606094) | Cod sursa (job #2503347)
#include <fstream>
using namespace std;
ifstream fin ("stramosi.in");
ofstream fout ("stramosi.out");
int n, m, x, y, k;
int tata[250005][20];
inline int find_daddy(int nod, int sus) {
int x = 0;
while (sus) {
++x;
if (sus & 1)
nod = tata[nod][x];
sus >>= 1;
}
return nod;
}
int main() {
fin >> n >> m;
for (int i = 1; i <= n; ++i)
fin >> tata[i][1];
bool gata = false;
for (int i = 1; !gata; ++i) {
gata = true;
for (int j = 1; j <= n; ++j) {
tata[j][i + 1] = tata[tata[j][i]][i];
if (tata[j][i + 1])
gata = false;
}
}
while (m--) {
fin >> x >> y;
k = find_daddy(x, y);
fout << k << '\n';
}
return 0;
}