Cod sursa(job #3302826)

Utilizator GliggyGligor Andrei Gliggy Data 11 iulie 2025 13:14:56
Problema Stramosi Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<bits/stdc++.h>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n,m,a,i,q,p,j;
vector<int>v[250010];
int f[250010],dp[250010][19];
void solve(int x){
    for(int it:v[x]){
        dp[it][0]=x;
        for(int j=1;j<=18;j++)
            dp[it][j]=dp[dp[it][j-1]][j-1];
        solve(it);
    }
}
int main(){
    fin>>n>>m;
    for(i=1;i<=n;i++){
        fin>>a;
        if(a) v[a].push_back(i),f[i]=1;
    }
    for(i=1;i<=n;i++)
        if(f[i]==0)
            solve(i);
    for(i=1;i<=m;i++){
        fin>>q>>p;
        for(j=0;p>0;j++,p/=2)
            if(p%2) q=dp[q][j];
        fout<<q<<"\n";
    }
    return 0;
}