Cod sursa(job #1184682)

Utilizator ArchazeyBaltatu Andrei-Mircea Archazey Data 13 mai 2014 20:16:43
Problema Lowest Common Ancestor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include<fstream>
#include<bitset>
using namespace std;

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

struct nod
{
    int tata,indice;
};

int n,m,a[100005],x,y;
nod viz[100005];

inline void Citire()
{
    int i;
    fin>>n>>m;
    for (i=2;i<=n;i++)
        fin>>a[i];
}

inline void Rezolva()
{
    int i,nr,poz,len,test,taticu;
    nod k;
    while (m--)
        {
            fin>>x>>y;
            while (x)
                {
                    viz[x].tata=1;
                    viz[x].indice=m;
                    x=a[x];
                }
            test=0;taticu=0;
            while (y && !test)
                {
                    if (viz[y].indice==m && viz[y].tata)
                        {
                            test=1;taticu=y;
                        }
                    y=a[y];
                }
            fout<<taticu<<"\n";
        }
}

int main()
{
    Citire();
    Rezolva();
    return 0;
}