Cod sursa(job #2305863)

Utilizator mirunaFmiruna mirunaF Data 21 decembrie 2018 11:49:11
Problema Lowest Common Ancestor Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <vector>

//#define for(n) for(int i = 1 ; i <= n; i++)

using namespace std;

void init ( int n, bool *w)
{
    for (int i = 1; i <= n; i++)
        w[i] = false;
}

int main()
{
    int n, m, i, x, y;

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

    in >> n >> m;
    vector <int> v (n+1);
    for ( i = 2; i <= n ; i++)
        in >> v[i];
    v[1] = 0;

    for( i = 1; i <= m; i++)
    {

        vector <bool> w (n+1, false);
        in >> x >> y;
        int j = x;
        while ( j != 0){
            w[j] = true;
            j = v[j];
        }
        j  = y;
        while ( w[j] != true)
           j = v[j];
        out << j << "\n";
    }

    in.close();
    out.close();

    return 0;
}