Cod sursa(job #2651556)

Utilizator Gliumarin negai Gliu Data 22 septembrie 2020 22:20:06
Problema Lowest Common Ancestor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.52 kb
//#include <iostream>
#include <fstream>

using namespace std;

ifstream cin("lca.in");
ofstream cout("lca.out");
int n,m,t[100000],l[100000];
dfs(int nod,int lev){
	l[nod]=lev;
	cout <<nod<<" "<<lev<<"\n";
	for(int i=1;i<=n;i++)
	  if(t[i] == nod)
	     dfs(i,lev+1);
}
int main(){
cin >>n>>m;
for(int i=1;i<n;i++)cin >>t[i+1];
dfs(1,0);
cout <<"\n";
for(int i=1;i<=m;i++){
	int x,y;
	
	cin >>x>>y;
	while(x != y){
		if(l[x]>l[y])
		  x=t[x];
		else 
		  y=t[y];  
	}
	cout <<x<<"\n";
}
return 0;
}