Pagini recente » Cod sursa (job #539575) | Cod sursa (job #2595078) | Cod sursa (job #2408028) | Cod sursa (job #2198692) | Cod sursa (job #2185756)
#include <iostream>
#include <fstream>
#include <vector>
#include <map>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int main()
{
vector<int> Dad;
map<pair<int, int>, int> Ancestor;
int no_nodes, no_queries, x, P, Q;
fin >> no_nodes >> no_queries;
for (int i = 0; i < no_nodes; i++){
fin >> x;
Dad.push_back(x);
}
for (int node = 0; node < no_nodes; node++){
int new_nod = node;
int no_ancestors = 0;
while (Dad[new_nod] != 0 && no_ancestors <= 100){
no_ancestors++;
Ancestor[make_pair(node + 1, no_ancestors)] = Dad[new_nod];
new_nod = Dad[new_nod] - 1;
}
}
while (no_queries--){
fin >> Q >> P;
fout << Ancestor[make_pair(Q , P)] << '\n';
}
return 0;
}