Cod sursa(job #205114)

Utilizator mihaipoascaPoasca Mihai mihaipoasca Data 29 august 2008 12:50:35
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>

FILE *fin=fopen("stramosi.in","r"),
    *fout=fopen("stramosi.out","w");

int N,M;
int a[25005][1000];

int interogare(int f,int c){
    int x=1;
    while(c){
        if(c%2)
            f=a[f][x];
        c/=2;
        ++x;
   }
   return f;
}

int main(){

    fscanf(fin,"%d%d",&N,&M);
    for(int i=1;i<=N;i++)
        fscanf(fin,"%d",&a[i][1]);

    for(int i=2;i<=20;i++)
        for(int j=1;j<=N;j++)
            a[j][i]=a[a[j][i-1]][i-1];

/*  for(int i=1;i<=N;i++){
        for(int j=1;j<=20;j++)
            fprintf(fout,"%d ",a[i][j]);
        fprintf(fout,"\n");
    }
*/
    for(int i=1;i<=M;i++){
        int f,c;
        fscanf(fin,"%d%d",&f,&c);
        fprintf(fout,"%d\n",interogare(f,c));
    }

    fclose(fin);
    fclose(fout);
    return 0;
}