Pagini recente » Cod sursa (job #1595410) | Cod sursa (job #2711633) | Cod sursa (job #2919767) | Cod sursa (job #1488524) | Cod sursa (job #3152551)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("stramosi.in");
ofstream out ("stramosi.out");
int n, m;
vector<vector<int>> v;
int rang[250011]; // rang imi permite sa merg doar in sus pe arbore
int nod, p;
int get_nthAncestor(int no, int target){
if(rang[no] == target){
out << no << endl;
return 1;
}
if(rang[no] == 0){
out << "0" << endl;
}
int k = 0;
for(int i : v[no]){
if(rang[i] < rang[no]){
k= 1;
get_nthAncestor(i, target);
}
}
}
int main()
{
in >> n >> m;
v.resize(n+112);
int x;
for(int i = 1; i <= n; i ++){
in >> x;
if(x == 0)
rang[i] = 0;
else
rang[i] = rang[x] + 1;
v[i].push_back(x);
v[x].push_back(i);
}
for(int i = 0; i < m; i ++){
in >> nod >> p;
get_nthAncestor(nod, rang[nod] - p);
}
return 0;
}