Pagini recente » Cod sursa (job #1130995) | Cod sursa (job #2145380) | Cod sursa (job #202195) | Cod sursa (job #2171839) | Cod sursa (job #1366039)
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
vector <int> stiva;
vector <int> s[250005];
vector <int> G[250005];
vector <int> t(2500005);
int main()
{
int n,m,i,j,nod,x,q,p;
f>>n>>m;
for(i=1;i<=n;i++)
{
f>>x;
G[x].push_back(i);
t[i]=x;
}
t[0]=0;
stiva.push_back(0);
while(stiva.empty()!=1)
{
nod=stiva.back();
stiva.pop_back();
if(G[nod].empty()==0)
{
for(i=0;i<G[nod].size();i++)
stiva.push_back(G[nod][i]);
}
s[nod]=s[t[nod]];
s[nod].push_back(nod);
}
for(i=1;i<=m;i++)
{
f>>q>>p;
if(p>=s[q].size())
g<<'0'<<endl;
else
{
x=s[q].size()-p;
g<<s[q][x-1]<<endl;
}
}
return 0;
}