Pagini recente » Cod sursa (job #3142803) | Cod sursa (job #563986) | Cod sursa (job #2222324) | Cod sursa (job #1607184) | Cod sursa (job #3234071)
#include <iostream>
#include <vector>
#include <stdint.h>
#include <fstream>
using namespace std;
int main(){
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
uint32_t nr_people, nr_queries;
fin >> nr_people >> nr_queries;
vector<uint32_t> descendents(nr_people);
vector<vector<uint32_t>> all_descendents(nr_people);
for (uint32_t i = 0; i < nr_people; ++i){
fin >> descendents[i];
if (descendents[i] != 0){
all_descendents[i] = all_descendents[descendents[i] - 1];
all_descendents[i].push_back(descendents[i] - 1);
}
}
while (nr_queries--){
uint32_t child, nr_descendents;
fin >> child >> nr_descendents;
uint32_t max_nr_des = all_descendents[child - 1].size();
if (nr_descendents > max_nr_des)
fout << 0 << endl;
else
fout << all_descendents[child - 1][max_nr_des - nr_descendents] + 1 << endl;
}
}