Cod sursa(job #2284213)

Utilizator ZappaManIosif Adrian-Mihai ZappaMan Data 16 noiembrie 2018 23:14:05
Problema Lowest Common Ancestor Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.58 kb
#include <stdio.h>
#include <math.h>

const int NMAX = 100005;
const int MMAX = 2000005;

int N, M;

int p[NMAX];

int main() {
   freopen("lca.in", "r", stdin);
   freopen("lca.out", "w", stdout);

   scanf("%d %d", &N, &M);

   p[1] = 1;

   for (int i = 2; i <= N; ++i) {
      scanf("%d", &p[i]);
   }

   for (int i = 0; i < M; ++i) {
      int n, m;
      scanf("%d %d", &n, &m);
      while (n != m) {
         if (n < m) {
            m = p[m];
         } else {
            n = p[n];
         }
      }
      printf("%d\n",n);
   }

   fclose(stdin);
   fclose(stdout);
   return 0;
}