Pagini recente » Cod sursa (job #1705274) | Cod sursa (job #271074) | Istoria paginii runda/okfrt | Cod sursa (job #1082662) | Cod sursa (job #2570075)
#include <fstream>
std :: ifstream fin ("lca.in");
std :: ofstream fout("lca.out");
int n, m;
int main() {
int* parentArray;
fin >> n >> m;
parentArray = new int[n + 1];
parentArray[1] = -1;
for (int i = 2;i <= n;i ++) {
fin >> parentArray[i];
}
int x, y;
for (int i = 1;i <= m;i ++) {
fin >> x >> y;
while (parentArray[x] != parentArray[y] and parentArray[y] != x and parentArray[x] != y) {
x = parentArray[x];
y = parentArray[y];
}
if (parentArray[y] == x)
fout << x << std :: endl;
else if (parentArray[x] == y)
fout << y << std :: endl;
else
fout << parentArray[x] << std :: endl;
}
fin.close();
fout.close();
return 0;
}