Cod sursa(job #2882489)

Utilizator MerlinTheWizardMelvin Abibula MerlinTheWizard Data 31 martie 2022 14:49:35
Problema Stramosi Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int n,m;
int LOG;
int up[250005][19];
int x,y;
 
void Citire()
{
    f>>n>>m;
    for(int i=1;i<=n;i++)
    {
        f>>up[i][1];
    }
}
void BuildMatrix()
{
    for(int i=1;i <= n ;i++)
    {
        for(int j=2;j<=LOG;j++)
        {
            up[i][j] = up[up[i][j-1]][j-1];
        }
    }
}
int KthAncestor(int node, int k)
{
    for(int i=1;i<=LOG;i++)
    {
        if(k&(1<<(i-1)))
            node = up[node][i];
    }
    return node;
}
int main()
{
    Citire();
    while(1<<LOG<=n)
        LOG++;
    BuildMatrix();
    for(int i=1;i<=m;i++)
    {
        f>>x>>y;
        g<<KthAncestor(x,y)<<"\n";
    }
}