Pagini recente » Cod sursa (job #248335) | Cod sursa (job #2889887) | Cod sursa (job #244153) | Cod sursa (job #2799565) | Cod sursa (job #1462407)
/*
How about a coding trick?
-Created by "EmanuelNrx"-
*/
#include <cstdio>
#include <vector>
#include <algorithm>
#define DIM 300010
using namespace std;
int N, M, K, X, Y, D[DIM], St[DIM];
vector <int> V[DIM], Q[DIM];
void DFS(int nod, int dep){
St[dep] = nod;
for(int i = 0; i < Q[nod].size(); i += 2){
int val = Q[nod][i+0];
int pos = Q[nod][i+1];
D[pos] = St[ max(dep - val, 0) ];
}
for(int i = 0; i < V[nod].size(); i ++){
int vec = V[nod][i];
DFS(vec, dep + 1);
}
return;
}
int main(){
freopen("stramosi.in" ,"r", stdin );
freopen("stramosi.out","w", stdout);
scanf("%d %d", &N, &M);
for(int i = 1; i <= N; i ++){
scanf("%d", &X);
V[X].push_back(i);
}
for(int i = 1; i <= M; i ++){
scanf("%d %d", &X, &Y);
Q[X].push_back(Y);
Q[X].push_back(i);
}
DFS(0, 0);
for(int i = 1; i <= M; i ++)
printf("%d\n", D[i]);
fclose(stdin );
fclose(stdout);
return 0;
}