Cod sursa(job #3284272)

Utilizator Jarvx404Bigu Cezar Jarvx404 Data 11 martie 2025 12:41:32
Problema Lowest Common Ancestor Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include<bits/stdc++.h>
#include <stack>

using namespace std;

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

int v[100001];
int c[100001];
stack<int> s1, s2;

bool dfs(int rt, int tg, int n){

	if(rt == tg){
		c[rt]+=1;
		return true;
	}


	for(int i=1; i <= n ; i++){
			if(v[i] == rt){
				bool gd = dfs(i, tg, n);
				if(gd){
					c[rt]+=1;
					return gd;
				}
			}
	}
	
	return false;
}

int main(){




	int n, m, nr, a, b;

	fin >> n >> m;


	for(int i=1; i < n ; i++){
			fin >> nr;
			v[i+1]=nr;
	}



	for(int j=1; j <= m ; j++){
		fin >> a >> b;
		dfs(1, a, n);
		dfs(1, b, n);


		for(int k=n; k >= 1 ; k--){
			if(c[k] >= 2){
				fout << k <<'\n';
				break;
			}
		}


		for(int i=1; i <= n ; i++){
			c[i]=0;
		}


	}
		











	return 0;
}