Cod sursa(job #3355970)

Utilizator matei__bBenchea Matei matei__b Data 28 mai 2026 03:58:14
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#include <vector>

const int NMAX=2.5e5+8;

int n,q;
std::vector<int> g[NMAX];
int anc[22][NMAX];

int bl(int nod,int niv) {
    int z=0;
    while(niv) {
        if(niv&1) {
            nod=anc[z][nod];
        }
        z++;
        niv>>=1;
    }
    return nod;
}

int main() {

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

    std::ios_base::sync_with_stdio(false);
    fin.tie(nullptr);
    fout.tie(nullptr);

    fin >> n >> q;
    int rt=0;
    for(int i=1; i<=n; i++) {
        fin >> anc[0][i];
        if(!anc[0][i]) {
            rt=i;
        } 
    }

    for(int i=1; (1<<i)<=n; i++) {
        for(int j=1; j<=n; j++) {
            anc[i][j]=anc[i-1][anc[i-1][j]];
        }
    }

    while(q--) {
        int nod,z;
        fin >> nod >> z;
        fout << bl(nod,z) << '\n';
    }

    return 0;
}