Cod sursa(job #1428558)

Utilizator o_micBianca Costin o_mic Data 4 mai 2015 19:10:51
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <fstream>
#include <iostream>
#define DN 250005
using namespace std;
  
int anc[30][DN];
  
int find_anc(int x, int p){
  for(int i = 20; i > -1; --i){
    if(p & (1 << i)){
      x = anc[i][x];
    }
  }
  return x;
}
  
int main() {
  int n, m, x, p;
  ifstream fin("stramosi.in");
  ofstream fout("stramosi.out");

  fin >> n >> m;
  for(int i = 1; i <= n; ++i){
    fin >> anc[0][i];
  }
  for(int j = 1; j < 20; ++j)
    for(int i = 1; i <= n; ++i){
      anc[j][i] = anc[j-1][anc[j-1][i]];
    }
  
  for(int i = 0; i < m; ++i){
    fin >> x >> p;
    fout << find_anc(x, p) << '\n';
  }
  return 0;
}