Cod sursa(job #3308682)

Utilizator InformaticianInDevenire1Munteanu Mihnea Gabriel InformaticianInDevenire1 Data 27 august 2025 12:10:21
Problema Lowest Common Ancestor Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.65 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ("lca.in");
ofstream fout ("lca.out");

int tata[100005];
int lvl[100005];

int main()
{
    int n,m;
    fin >> n >> m;
    lvl[1] = 1;
    tata[1] = 1;
    for (int i=2;i<=n;++i){
        fin >> tata[i];
        lvl[i] = lvl[tata[i]]+1;
    }
    while (m--){
        int x,y;
        fin >> x >> y;
        while (lvl[x]>lvl[y]){
            x = tata[x];
        }
        while (lvl[y]>lvl[x]){
            y = tata[y];
        }
        while (x!=y){
            x = tata[x];
            y = tata[y];
        }
        fout << x << '\n';
    }
    return 0;
}