Cod sursa(job #2642118)

Utilizator MoldovanAndrei1Moldovan Andrei MoldovanAndrei1 Data 13 august 2020 18:27:56
Problema Lowest Common Ancestor Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.52 kb
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 100005;
int viz[NMAX] , d[NMAX];
int lca(int a,int b)
{
    if(a==b)return a;
    if(d[a]>=d[b])return lca(viz[a],b);
    if(d[a]<d[b])return lca(viz[b],a);

}
int main()
{
    freopen("lca.in","r",stdin);
    freopen("lca.out","w",stdout);
    int n , q , i , j , a,b;
    cin>>n>>q;
    for(i=2;i<=n;i++)cin>>viz[i],d[i]=d[viz[i]]+1;
    for(i=1;i<=q;i++)
    {
        scanf("%d%d",&a,&b);
        printf("%d\n",lca(a,b));
    }
    return 0;
}