Cod sursa(job #980428)

Utilizator smaraldaSmaranda Dinu smaralda Data 4 august 2013 17:19:57
Problema Stramosi Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<stdio.h>
#include<vector>
#define NMAX 250000
using namespace std;
int d[NMAX+5][20];

int cauta (int v, int cnt) {
    int i;
    for(i=0; (1<<i) <= cnt; i++);
    i--;
    if((1<<i)!=cnt)
        return cauta(d[v][i],cnt-(1<<i));
    return d[v][i];
}

int main() {
    freopen("stramosi.in","r",stdin);
    freopen("stramosi.out","w",stdout);
    int n,m,p,q,j,i;
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
        scanf("%d",&d[i][0]);

    for(j=1; (1<<j) <=n ; j++)
        for(i=1;i<=n;i++)
            d[i][j]=d[d[i][j-1]][j-1];

    while(m) {
        --m;
        scanf("%d%d",&q,&p);
        printf("%d\n",cauta(q,p));
        }
    return 0;
}