Pagini recente » Cod sursa (job #3336129) | Cod sursa (job #740745) | Cod sursa (job #54459) | Cod sursa (job #2842292) | Cod sursa (job #3308682)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("lca.in");
ofstream fout ("lca.out");
int tata[100005];
int lvl[100005];
int main()
{
int n,m;
fin >> n >> m;
lvl[1] = 1;
tata[1] = 1;
for (int i=2;i<=n;++i){
fin >> tata[i];
lvl[i] = lvl[tata[i]]+1;
}
while (m--){
int x,y;
fin >> x >> y;
while (lvl[x]>lvl[y]){
x = tata[x];
}
while (lvl[y]>lvl[x]){
y = tata[y];
}
while (x!=y){
x = tata[x];
y = tata[y];
}
fout << x << '\n';
}
return 0;
}