Cod sursa(job #1462719)

Utilizator robx12lnLinca Robert robx12ln Data 18 iulie 2015 19:00:09
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int str[20][250005],n,m;
void stramosi(){
    //str[k][i]= stramosul de gradul 2^k al lui i
    for(int k=1;k<=19;k++){
        for(int i=1;i<=n;i++){
            str[k][i]=str[ k - 1 ][ str[k-1][i] ];
        }
    }
    return ;
}
int nod,k,i,grad;
int main(){
    fin>>n>>m;
    for(i=1;i<=n;i++){
        fin>>str[0][i];
    }
    stramosi();
    for(i=1;i<=m;i++){
        fin>>nod>>grad;
        while(grad>0){
            for(k=1;(1<<k)<=grad;k++){}
            k--;
            grad-=(1<<k);
            nod=str[k][nod];
        }
        fout<<nod<<"\n";
    }
    return 0;
}