Pagini recente » Cod sursa (job #833428) | Cod sursa (job #2717529) | Cod sursa (job #1089150) | Rating Iacob Elena (elena) | Cod sursa (job #3173617)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
using VI = vector<int>;
using VVI = vector<VI>;
using PI = vector<pair<int, int>>;
using VVP = vector<PI>;
int n, m;
VVI G;
VVP Q;
VI R;
VI drum;
void df(int node) {
//cout << node << '\n';
for(auto [num, i] : Q[node]) {
if(drum.size() >= num)
R[i] = drum[drum.size() - num];
}
drum.push_back(node);
for(int y : G[node]) {
df(y);
}
drum.pop_back();
}
int main(){
cin >> n >> m;
G = VVI(n+1);
Q = VVP(n+1);
R = VI(m);
int x, num;
for(int i=1; i<=n; ++i) {
cin >> x;
G[x].push_back(i);
}
for(int i=0; i<m; ++i) {
cin >> x >> num;
Q[x].emplace_back(num, i);
}
df(0);
//cout << "DONE\n";
for(int i=0; i<m; ++i)
cout << R[i] << '\n';
return 0;
}