Pagini recente » Cod sursa (job #1368958) | Cod sursa (job #347091) | Cod sursa (job #827887) | Cod sursa (job #2499494) | Cod sursa (job #2642118)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 100005;
int viz[NMAX] , d[NMAX];
int lca(int a,int b)
{
if(a==b)return a;
if(d[a]>=d[b])return lca(viz[a],b);
if(d[a]<d[b])return lca(viz[b],a);
}
int main()
{
freopen("lca.in","r",stdin);
freopen("lca.out","w",stdout);
int n , q , i , j , a,b;
cin>>n>>q;
for(i=2;i<=n;i++)cin>>viz[i],d[i]=d[viz[i]]+1;
for(i=1;i<=q;i++)
{
scanf("%d%d",&a,&b);
printf("%d\n",lca(a,b));
}
return 0;
}