Pagini recente » Cod sursa (job #1121097) | Cod sursa (job #361293) | Cod sursa (job #1291819) | Cod sursa (job #1526746) | Cod sursa (job #2570045)
#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;
if (parentArray[y] == x) {
fout << x << std :: endl;
} else if (parentArray[x] == y)
fout << y << std :: endl;
else {
while (parentArray[x] != parentArray[y]) {
x = parentArray[x];
y = parentArray[y];
}
fout << parentArray[x] << std :: endl;
}
}
fin.close();
fout.close();
return 0;
}