Cod sursa(job #3301712)

Utilizator Octa-pe-infoNechifor Octavian Octa-pe-info Data 29 iunie 2025 12:29:41
Problema Stramosi Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

ifstream fin("stramosi.in");
ofstream fout("stramosi.out");

vector<vector<int>>rmq,tabel;

vector<int>pr,niv;

void dfs(int nod,int pr){

    for(auto i : tabel[nod]){

        if(i==pr)
            continue;

        rmq[i][0] = nod;
        dfs(i,nod);
    }
}

void build(int n){

    for(int i=1;i<=17;i++){

        for(int j=1;j<=n;j++){

            rmq[j][i] = rmq[rmq[j][i-1]][i-1];
        }
    }
}

void qeu(int nod,int p){

    for(int i=17;i>=0;i--){

        if((p & (1 << i)))
            nod = rmq[nod][i];
    }

    fout<<nod<<'\n';
}

int main()
{

    int n,m;

    fin>>n>>m;

    rmq.resize(n+1,vector<int>(18));

    int root=0;

    for(int i=1;i<=n;i++){

        int tata;
        fin>>tata;

        rmq[i][0] = tata;
    }

    rmq[0][0] = 0;

    build(n);

    while(m--){

        int q,p;
        fin>>q>>p;

        qeu(q,p);
    }

    return 0;
}