Pagini recente » Cod sursa (job #254408) | Cod sursa (job #1972101) | Cod sursa (job #625605) | Cod sursa (job #2518777) | Cod sursa (job #3284274)
#include <iostream>
#include <vector>
using namespace std;
int t[100001];
int n,m;
int v1[100001],v2[100001];
void path(int nod,int &k,int v[]){
v[++k]=nod;
if(t[nod]!=0)
path(t[nod],k,v);
}
int main()
{
cin>>n>>m;
for(int i=2;i<=n;i++)
cin>>t[i];
for(int i=1;i<=m;i++){
int x,y;
cin>>x>>y;
int k1=0,k2=0;
path(x,k1,v1);
path(y,k2,v2);
int i1=k1,i2=k2;
while(i1>=1&&i2>=1&&v1[i1]==v2[i2]){
i1--;
i2--;
}
//for(int j=k1;j>=1;j--)
// cout<<v1[j]<<' ';
//cout<<'\n';
//for(int j=k2;j>=1;j--)
// cout<<v2[j]<<' ';
//cout<<'\n';**/
cout<<v1[i1+1]<<'\n';
}
return 0;
}