Cod sursa(job #2090478)

Utilizator albucristianAlbu Cristian-Gabriel albucristian Data 18 decembrie 2017 10:33:59
Problema Lowest Common Ancestor Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <fstream>
using namespace std;
int v[100002],niv[100002];
int lca(int x,int y)
{
    if(niv[x]==niv[y])
    {
        if(x==y)
            return x;
        lca(v[x],v[y]);
    }
    else
    {
        if(niv[x]>niv[y])
        {
            lca(v[x],y);
        }
        else
        {
            lca(x,v[y]);
        }
    }
}
int main()
{
    int n,m,i,a,b;
    ifstream in("lca.in");
    ofstream out("lca.out");
    in>>n>>m;
    niv[1]=1;
    for(i=2;i<=n;i++)
    {
        in>>v[i];
        niv[i]=niv[v[i]]+1;
    }
    for(i=1;i<=m;i++)
    {
        in>>a>>b;
        out<<lca(a,b)<<endl;
    }
    return 0;
}