Cod sursa(job #2926704)

Utilizator alexmorosanuMorosanu Alexandru alexmorosanu Data 18 octombrie 2022 14:26:04
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
vector <int> v[250011];
int d[250011][19];
void dfs(int k)
{
    int n=1;
    do
    {
        n++;
        d[k][n]=d[d[k][n-1]][n-1];
    }while(d[k][n]);
    for(int i=0;i<v[k].size();i++)
        dfs(v[k][i]);
}
int n,m,x,y,p,l,i;
int main()
{
    f>>n>>m;
    for(i=1;i<=n;i++)
    {
        f>>x;
        d[i][1]=x;
        v[x].push_back(i);
    }
    dfs(0);
    for(i=1;i<=m;i++)
    {
        f>>x>>y;
        p=x;
        l=1;
        while(y)
        {
            if(y%2==1)
                p=d[p][l];
            l++;
            y=y/2;
        }
        g<<p<<'\n';
    }
    return 0;
}