Pagini recente » Cod sursa (job #1667720) | Cod sursa (job #271647) | Cod sursa (job #2740537) | Cod sursa (job #3254794) | Cod sursa (job #2171896)
#include <bits/stdc++.h>
#define INF 100000
#define NMAX 300005
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
vector <int> mv[NMAX];
deque <int> dp[NMAX];
int v[NMAX];
queue <int> q;
void BFS(){
int i,x;
while(!q.empty()){
x=q.front();
q.pop();
for(i=0;i<mv[x].size();i++){
for(int j=0;j<dp[x].size();j++)
dp[mv[x][i]].push_back(dp[x][j]);
dp[mv[x][i]].push_front(x);
q.push(mv[x][i]);
}
}
}
int main(){
int n,m,i,p,qq;
fin>>n>>m;
for(i=1;i<=n;i++){
fin>>v[i];
if(v[i])
mv[v[i]].push_back(i);
else
q.push(i);
}
BFS();
for(i=1;i<=m;i++){
fin>>qq>>p;
if(p>dp[qq].size())
fout<<0<<"\n";
else
fout<<dp[qq][p-1]<<"\n";
}
return 0;
}