Pagini recente » Cod sursa (job #1497234) | Cod sursa (job #2030106) | Cod sursa (job #122080) | Cod sursa (job #385507) | Cod sursa (job #1435133)
#include <fstream>
using namespace std;
ifstream in("lca.in");
ofstream out("lca.out");
const int NMAX=100010;
int n,i,x,a,b;
int niv[NMAX],tata[NMAX];
long long teste;
int main()
{
in>>n>>teste;
niv[1]=0;
tata[1]=1;
for(i=2;i<=n;i++)
{
in>>tata[i];
niv[i]=niv[tata[i]]+1;
}
for(i=1;i<=teste;i++)
{
in>>a>>b;
while(niv[a]<niv[b])
{
b=tata[b];
}
while(niv[b]<niv[a])
{
a=tata[a];
}
while(a!=b)
{
a=tata[a];
b=tata[b];
}
out<<a<<'\n';
}
in.close();
out.close();
return 0;
}