Pagini recente » Cod sursa (job #2772625) | Cod sursa (job #974036) | Cod sursa (job #2036139) | Cod sursa (job #294141) | Cod sursa (job #1184682)
#include<fstream>
#include<bitset>
using namespace std;
ifstream fin("lca.in");
ofstream fout("lca.out");
struct nod
{
int tata,indice;
};
int n,m,a[100005],x,y;
nod viz[100005];
inline void Citire()
{
int i;
fin>>n>>m;
for (i=2;i<=n;i++)
fin>>a[i];
}
inline void Rezolva()
{
int i,nr,poz,len,test,taticu;
nod k;
while (m--)
{
fin>>x>>y;
while (x)
{
viz[x].tata=1;
viz[x].indice=m;
x=a[x];
}
test=0;taticu=0;
while (y && !test)
{
if (viz[y].indice==m && viz[y].tata)
{
test=1;taticu=y;
}
y=a[y];
}
fout<<taticu<<"\n";
}
}
int main()
{
Citire();
Rezolva();
return 0;
}