Pagini recente » Cod sursa (job #1922208) | Cod sursa (job #2306571) | Cod sursa (job #2059893) | Cod sursa (job #3178853) | Cod sursa (job #3137137)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
vector<int> x[250001];
vector<pair<int, int> > v[250001];
int y[250001], sol[300001];
int DFS(int nod, int k)
{y[k]=nod;
for(int i=0;i<v[nod].size();i++)
sol[v[nod][i].second]=y[max(k-v[nod][i].first, 0)];
vector<int>:: iterator I;
for(I=x[nod].begin();I<x[nod].end();I++)
DFS(*I, k+1);
}
int main()
{ int n, m, a, b;
fin>>n>>m;
for(int i=1;i<=n;i++)
{fin>>a;
x[a].push_back(i);
}
for(int i=1;i<=m;i++)
{fin>>a>>b;
v[a].push_back({b, i});
}
DFS(0, 1);
for(int i=1;i<=m;i++)
fout<<sol[i]<<"\n";
return 0;
}