Pagini recente » Cod sursa (job #2875774) | Cod sursa (job #1611629) | Cod sursa (job #1793406) | Cod sursa (job #60636) | Cod sursa (job #1495333)
#include <fstream>
#include <vector>
#include <bitset>
#include <queue>
using namespace std;
ofstream fout("stramosi.out");
ifstream fin("stramosi.in");
const int NMAX = 250050;
int n, m;
vector<int> Fii;
vector<int> Graf[NMAX];
vector<int> Sol[NMAX];
bitset<NMAX> Viz;
void dfs(int nod)
{
Sol[nod] = Fii;
if(nod) Fii.push_back(nod);
for(auto x : Graf[nod]) {
if(!Viz[x])
Viz[x] = 1;
dfs(x);
}
Fii.pop_back();
}
int main()
{
fin >> n >> m;
for(int i=1, x; i<=n; i++) {
fin >> x;
Graf[x].push_back(i);
}
dfs(0);
for(int i=1, x, y; i<=m; i++) {
fin >> x >> y;
if(Sol[x].size() >= y) fout << Sol[x][Sol[x].size()-y] << '\n';
else fout << "0\n";
}
return 0;
}