Cod sursa(job #1326148)

Utilizator forever16Alex M forever16 Data 24 ianuarie 2015 19:29:13
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <iostream>
#include<fstream>
#define nmax 300001

using namespace std;
    ifstream f("stramosi.in");
    ofstream g("stramosi.out");
long int n, m, x, y,parent[nmax], level[nmax];

void explore(int x)
{   if(level[x]) return;
    explore(parent[x]);
    level[x]=level[parent[x]]+1;
}

int main()
{   f>>n>>m;
    for(int i=1; i<=n; i++) {f>>parent[i]; if (parent[i]==0) level[i]=i; }
    level[1]=1;
    for(int i=1; i<=n; i++) explore(i);
int aux;

   for(int i=1; i<=m; i++)
       { f>>x>>y;
       if(y==1) g<<parent[x]<<"\n";
       else {while(y>1) {level[x]--; y--; } g<<parent[level[x-1]]<<"\n";}}

    return 0;
}