Cod sursa(job #2139275)

Utilizator andr3i_kaabAndrei Ciineanu andr3i_kaab Data 22 februarie 2018 12:39:00
Problema Lowest Common Ancestor Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <iostream>
#include <fstream>
/// LCA de 30p cu urc in sus

using namespace std;

ifstream f("lca.in");
ofstream g("lca.out");

int n, m, a[100005], niv[100005], depth[100005];

void df(int i, int lev)
{
    int j;
    niv[i]=lev;
    for (j=1; j<=n; j++)
      if (a[j]==i)
        df(j, lev+1);
}
int main()
{
    int i, x, y;
    f>>n>>m;
    for (i=2; i<=n; i++) f>>a[i];

    df(1, 0);

    for (i=1; i<=m; i++)
    {
        f>>x>>y;
        while (x!=y)
          if (niv[x]>niv[y]) x=a[x];
          else y=a[y];
        g<<x<<"\n";
    }
    return 0;
}