Pagini recente » Cod sursa (job #3317300) | Cod sursa (job #1111323) | Cod sursa (job #2850785) | Cod sursa (job #2337407) | Cod sursa (job #2126878)
//#include <iostream>
#include <fstream>
using namespace std;
ifstream f("lca.in");
ofstream cout("lca.out");
int n, m, dads[100002];
int main()
{
int i, j, x, y;
f>>n>>m;
dads[1]=0;
for (i=2; i<=n; i++) f>>dads[i];
for (i=1; i<=m; i++)
{
f>>x>>y;
while (x && y)
{
//x=dads[x]; y=dads[y];
int d1, d2;
d1=dads[x]; d2=dads[y];
if (d1==d2)
{
x=dads[x]; y=dads[y];
cout<<x<<"\n";
break;
}
else
if (d1==y || d2==x)
{
if (x<y) cout<<x<<"\n";
else cout<<y<<"\n";
x=dads[x]; y=dads[y];
break;
}
else x=dads[x], y=dads[y];
}
}
return 0;
}