Cod sursa(job #2486248)

Utilizator Catalin2002Catalin Craciun Catalin2002 Data 2 noiembrie 2019 15:47:36
Problema Lowest Common Ancestor Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>
using namespace std;

int v1[100005];
int v2[100005];

int v[100005];

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


int main()
{
    int i,n,m,ct1,ct2,j1,j2,x,y;

    fin>>n>>m;

    for(i=2;i<=n;i++)
        fin>>v[i];


    for(i=1;i<=m;i++)
    {
        fin>>x>>y;

        ct1=1;
        ct2=1;

        v1[ct1]=x;
        v2[ct2]=y;

        while(v1[ct1]!=1)
        {
            ct1++;
            v1[ct1]=v[ v1[ct1-1] ];
        }

        while(v2[ct2]!=1)
        {
            ct2++;
            v2[ct2]=v[ v2[ct2-1] ];
        }

        while(v1[ct1]==v2[ct2]&&ct1>=1&&ct2>=1)
        {
            ct1--;
            ct2--;
        }

        fout<<v1[ct1+1]<<"\n";

    }


    return 0;
}