Pagini recente » Cod sursa (job #1026348) | Cod sursa (job #1438946) | Cod sursa (job #454040) | Cod sursa (job #1083363) | Cod sursa (job #2216387)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
const int NMAX = 250001;
ifstream f ("stramosi.in");
ofstream g ("stramosi.out");
int N, M;
vector<int> A[NMAX];
void precalc()
{
int T;
f >> N >> M;
for (int i = 1; i <= N; i++)
{
f >> T;
if (T == 0)
A[i].push_back (0); //A[i][0]
else
{
A[i].push_back (A[T][0] + 1); //A[i][0]
A[i].push_back (T); //A[i][1]
for (int j = 2; j <= A[i][0]; j++)
A[i].push_back (A[T][j - 1]); //A[i][j]
}
}
}
int main()
{
int Q, P;
precalc();
while (M--)
{
f >> Q >> P;
if (P > A[Q][0])
g << "0\n";
else
g << A[Q][P] << '\n';
}
return 0;
}