Pagini recente » Cod sursa (job #1175471) | Cod sursa (job #113923) | Cod sursa (job #1476636) | Cod sursa (job #2316525) | Cod sursa (job #2651557)
//#include <iostream>
#include <fstream>
using namespace std;
ifstream cin("lca.in");
ofstream cout("lca.out");
int n,m,t[100000],l[100000];
int 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;
}