Cod sursa(job #1588319)

Utilizator RadduFMI Dinu Radu Raddu Data 2 februarie 2016 22:56:39
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int n,q,dad[250005][20];
int Solve(int x,int k)
{ int i;

 for(i=0;i<=19 && x;i++)
  if (k&(1<<i)) x=dad[x][i];

return x;
}

void Build()
{ int i,p;
   for(p=1;p<=19;p++)
    for(i=1;i<=n;i++)
      dad[i][p]=dad[dad[i][p-1]][p-1];
}

int main()
{ int i,x,y;
    f>>n>>q;
    for(i=1;i<=n;i++)
     { f>>x;
       dad[i][0]=x;
     }

    Build();

    for(i=1;i<=q;i++)
    { f>>x>>y;
       g<<Solve(x,y)<<"\n";
    }
    return 0;
}