Pagini recente » Cod sursa (job #2062109) | Cod sursa (job #2614865) | Cod sursa (job #3184671) | Cod sursa (job #1194410) | Cod sursa (job #3240004)
#include <bits/stdc++.h>
#define VMAX 100
#define NMAX 300000
#define LOG 21
#define INF (int)(10e8)
#define MOD 30011
#define ll long long int
#define NIL 0
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n,m;
vector<int> q[NMAX+1];
vector<int> adj[NMAX+1];
int t[NMAX+1];
int res[NMAX+1],p[NMAX+1];
int depth[NMAX+1];
void dfs(int x,int d)
{
depth[d]=x;
for(int i : q[x])
{
if(d-p[i] > 0)
{
res[i] = depth[d-p[i]];
}
else
{
res[i] = 0;
}
}
for(int i : adj[x])
{
dfs(i,d+1);
}
}
int main()
{
fin >> n >> m;
for(int i=1;i<=n;i++)
{
fin >> t[i];
adj[t[i]].push_back(i);
}
for(int i=1;i<=m;i++)
{
int x,y;
fin >> x >> y;
q[x].push_back(i);
p[i]=y;
}
dfs(0,0);
for(int i=1;i<=m;i++)
{
fout << res[i] << "\n";
}
}