Cod sursa(job #2693286)

Utilizator Arsene_DenisaArsene Denisa Arsene_Denisa Data 5 ianuarie 2021 14:00:09
Problema Lowest Common Ancestor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include<fstream>

using namespace std;

int t[100001], c[100001], cont[100001];
int main() {
    int n, m, i, j, root, x, p, a, b;

    ifstream fin("lca.in");
    ofstream fout("lca.out");
    fin>>n>>m;
    for(i=1;i<=n-1;i++) {
            fin>>x;
          t[i+1]=x;
    }
   root=1;
    for(i=1;i<=m;i++) {
        fin>>a>>b;
        if(a==t[b]) {
             fout<<a<<"\n";
        }
        else if(b==t[a]) {
                fout<<b<<"\n";
        }
        else {
        int ok=0;
        while(ok==0) {
            a=t[a];
        cont[a]++;
        if(a==root) {
                ok=1;
        }
        }
        ok=0;
       int findd=0;
       while(ok==0) {
            b=t[b];
       if(cont[b]!=0) {
                        findd=b;
                         ok=1;
                }
           if(b==root) {
                        ok=1;
           }
        }
        fout<<findd<<"\n";
        }
        for(j=1;j<=n;j++) {
                cont[j]=0;
        }
    }
    return 0;
}