Pagini recente » Cod sursa (job #3333045) | Cod sursa (job #3324697) | Cod sursa (job #665233) | Cod sursa (job #2988043) | Cod sursa (job #3345083)
#include <fstream>
#include <vector>
#define NMAX 250002
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int N,M,tata[NMAX],nivel[NMAX];
vector<int> tree[NMAX];
void citire()
{
fin>>N>>M;
for(int i=1; i<=N; i++)
{
fin>>tata[i];
tree[tata[i]].push_back(i);
}
}
void DFS(int nod)
{
for(int i=0; i<tree[nod].size(); i++)
{
int next_nod=tree[nod][i];
nivel[next_nod]=nivel[nod]+1;
DFS(next_nod);
}
}
int main()
{
citire();
DFS(1);
int Q,P;
for(int i=1; i<=M; i++)
{
fin>>Q>>P;
while(P && Q)
{
P--;
Q=tata[Q];
}
fout<< Q << "\n";
}
return 0;
}