Cod sursa(job #3320237)

Utilizator philippe98Colta Philippe Andrei philippe98 Data 4 noiembrie 2025 17:57:43
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<fstream>

using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
int p, q;
int n, m;
const int LOG = 20;
const int N = 250005;
int parent[N];
int up[N][LOG];
//up v j = al 2^j stramos a lui v


int main() {
    cin >> n >> m;
    for (int i = 1; i<=n; i++) {
        cin >> parent[i];
    }

    parent[0] = 0;
    for (int i = 1; i<=n; i++) {
        up[i][0] = parent[i];
        for (int j = 1; j<=LOG - 1; j++) {
            up[i][j] = up[up[i][j-1]][j-1];
        }
    }



    for (int i =1; i<=m; i++) {
        cin >> q >> p;
        for (int j = 0; j < LOG; j++) {
            if (p & (1 << j)) {
                q = up[q][j];
            }
        }

        cout << q << '\n';
    }

    return 0;
}