Cod sursa(job #1688297)

Utilizator firutibogdanFiruti Bogdan-Cristian firutibogdan Data 13 aprilie 2016 13:21:28
Problema Lowest Common Ancestor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream>
using namespace std;
int i,n,m,tata[100002],u,v,poz1,poz2;
int main()
{
     ifstream fin("lca.in");
    ofstream fout("lca.out");
    fin>>n>>m;
    tata[1]=0;
    for(i=2;i<=n;i++)
    {
        fin>>tata[i];
    }
    for(i=1;i<=m;i++)
    {
        fin>>u>>v;
        poz1=u;
        poz2=v;
        if(tata[u]==v)
        {
            fout<<v<<'\n';
        }
        else
        {
            if(tata[v]==u)
            {
                fout<<u<<'\n';
            }
            else
            {
                while(poz1!=poz2)
                {
                    poz1=tata[poz1];
                    poz2=tata[poz2];
                }
                fout<<poz1<<'\n';
            }
        }
    }
    return 0;
}