Pagini recente » Cod sursa (job #1441429) | Cod sursa (job #1091722) | Cod sursa (job #3270208) | Cod sursa (job #3218600) | Cod sursa (job #3291426)
#include <iostream>
#include <vector>
#include <set>
using namespace std;
#define NMAX 250001
int n, q;
vector<int> g[NMAX], strm[NMAX];
void dfs(int r, int p){
strm[r].push_back(p);
for (auto it:strm[p])strm[r].push_back(it);
for (auto it:g[r]){
if (it==p)continue;
dfs(it, r);
}
}
int main(){
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
cin>>n>>q;
for (int i=1; i<=n; ++i){
int x;
cin>>x;
g[x].push_back(i);
g[i].push_back(x);
}
for (auto it:g[0]){
dfs(it, 0);
}
while (q--){
int x, y;
cin>>x>>y;
--y;
if (y<strm[x].size())cout<<strm[x][y]<<"\n";
else cout<<"0\n";
}
return 0;
}