Pagini recente » Cod sursa (job #998554) | Cod sursa (job #194324) | Cod sursa (job #2196724) | Cod sursa (job #1102561) | Cod sursa (job #3181379)
#include <bits/stdc++.h>
#define pii pair<int, int>
using namespace std;
const int NMAX = 25e4+2;
const int MMAX = 3e5+2;
int n,m,t[NMAX],sol[MMAX],vf[NMAX],st[NMAX];
vector<int> v[NMAX];
vector<pii> queries[NMAX];
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
void dfs(int nod, int niv = 1){
st[niv] = nod;
for(auto [k, idx]: queries[nod]){
sol[idx] = st[niv-k];
}
vf[nod] = 1;
for(int fiu: v[nod]){
if(vf[fiu] == 1){
continue;
}
dfs(fiu, niv+1);
}
}
int main()
{
fin >> n >> m;
for(int i = 1; i <= n; i++){
int x;
fin >> x;
if(x == 0){
continue;
}else{
v[i].push_back(x);
v[x].push_back(i);
}
}
for(int i = 1; i <= m; i++){
int q, p;
fin >> q >> p;
queries[q].push_back({p, i});
}
for(int i = 1; i <= n; i++){
if(vf[i] == 0){
dfs(i);
}
}
for(int i = 1; i <= m; i++){
fout << sol[i] << "\n";
}
return 0;
}