Pagini recente » Cod sursa (job #1848152) | Cod sursa (job #3305089) | Cod sursa (job #735130) | Cod sursa (job #2385089) | Cod sursa (job #3302827)
#include <bits/stdc++.h>
#define MAX1 300005
#define MAX2 250005
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, m, i, x, y, r[MAX1];
vector<int>v[MAX2], s;
set<pair<int, int>>q[MAX2];
void dfs(int nod) {
s.push_back(nod);
int lg=s.size();
for (auto x:q[nod]) r[x.second]=s[lg-1-min(x.first, lg-1)];
for (auto x:v[nod]) dfs(x);
s.pop_back();
}
int main()
{
fin>>n>>m;
for (i=1; i<=n; i++) {
fin>>x;
v[x].push_back(i);
}
for (i=1; i<=m; i++) {
fin>>x>>y;
q[x].insert({y, i});
}
dfs(0);
for (i=1; i<=m; i++) fout<<r[i]<<'\n';
return 0;
}