Cod sursa(job #3266580)

Utilizator Luca07Nicolae Luca Luca07 Data 9 ianuarie 2025 16:12:33
Problema Stramosi Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<fstream>
#include<vector>
using namespace std;

ifstream cin("stramosi.in");
ofstream cout("stramosi.out");

vector<vector<int> > vparent;

int main(){
    int n,m,i,j,nr,u,v;
    int pw=0;

    cin>>n>>m;
    while((1<<pw)<=n){
        pw++;
    }
    vparent=vector<vector<int> >(n+1,vector<int>(pw+1,0));

    for(i=1;i<=n;i++){
        cin>>nr;
        vparent[i][0]=nr;
    }
    for(j=1;j<=pw;j++){
        for(i=1;i<=n;i++){
            vparent[i][j]=vparent[vparent[i][j-1]][j-1];
        }
    }

    while(m--){
        cin>>u>>nr;
        i=pw;
        while(i--&&nr>0){
            if((1<<i)<=nr){
                u=vparent[u][i];
                nr-=(1<<i);
            }
        }
        cout<<u<<"\n";
    }

    return 0;
}