Cod sursa(job #3291426)

Utilizator IleaIlea Bogdan Ilea Data 4 aprilie 2025 17:52:32
Problema Stramosi Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <iostream>
#include <vector>
#include <set>
using namespace std;

#define NMAX 250001

int n, q;
vector<int> g[NMAX], strm[NMAX];
void dfs(int r, int p){
    strm[r].push_back(p);
    for (auto it:strm[p])strm[r].push_back(it);
    for (auto it:g[r]){
        if (it==p)continue;
        dfs(it, r);
    }
}
int main(){
    freopen("stramosi.in", "r", stdin);
    freopen("stramosi.out", "w", stdout);
    cin>>n>>q;
    for (int i=1; i<=n; ++i){
        int x;
        cin>>x;
        g[x].push_back(i);
        g[i].push_back(x);
    }
    for (auto it:g[0]){
        dfs(it, 0);
    }
    while (q--){
        int x, y;
        cin>>x>>y;
        --y;
        if (y<strm[x].size())cout<<strm[x][y]<<"\n";
        else cout<<"0\n";
    }
    return 0;
}