Pagini recente » Cod sursa (job #2172178) | virtual-101 | Cod sursa (job #90847) | Clasament preoji2020 | Cod sursa (job #393359)
Cod sursa(job #393359)
#include<stdio.h>
#include<vector>
using namespace std;
vector<int> x[ 30007 ],poz[ 30007 ],v[ 250007 ];
int i,j,k,l,m,n,sol[ 30007 ],a,b,s[ 25007 ];
void dfs(int nod,int k){
s[k] = nod;
if(!x[nod].empty())
{int N,j;
N = x[nod].size();
for( j = 0 ; j < N ; j++)
if(k > x[nod][j])
sol[poz[nod][j]] = s[k - x[nod][j]];
}
int i,n;
n = v[nod].size();
for( i = 0; i < n ; i++)
dfs(v[nod][i],k+1);
}
int main(){
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
scanf("%d %d",&n,&m);
for(i = 1 ; i <= n ; i++)
{scanf("%d",&a);
v[a].push_back(i);
}
for(i = 1 ; i <= m ; i++ )
{scanf("%d %d",&b,&a);
x[b].push_back(a);
poz[b].push_back(i);
}
dfs(0,0);
for(i = 1 ; i <= m ; i++)
printf("%d\n",sol[i]);
return 0;}