Pagini recente » Cod sursa (job #1376406) | Cod sursa (job #2296796) | Cod sursa (job #41020) | Cod sursa (job #924476) | Cod sursa (job #1294706)
#include <fstream>
#include <unordered_map>
using namespace std;
int findAncestor(unordered_map<int, int>* umap, int q, int p)
{
if (umap[q].find(p) == umap[q].end()) {
umap[q][p] = findAncestor(umap, umap[q][1], p - 1);
}
return umap[q][p];
}
int main()
{
ifstream in("stramosi.in");
ofstream out("stramosi.out");
int N, M, Q, P;
in >> N >> M;
unordered_map<int, int> * ancestor = new unordered_map<int, int>[N + 1];
for (int i = 1; i <= N; i++) {
int x; in >> x;
ancestor[i][1] = x;
}
for (int i = 0; i < M; i++) {
in >> Q >> P;
out << findAncestor(ancestor, Q, P) << '\n';
}
delete[] ancestor;
in.close();
out.close();
}