Pagini recente » Cod sursa (job #369236) | Cod sursa (job #1313077) | Cod sursa (job #1993594) | Cod sursa (job #2927572) | Cod sursa (job #2600922)
#include <fstream>
using namespace std;
ifstream fin ("lca.in");
ofstream fout ("lca.out");
int n, m, T[100010], H[100010];
int lca ( int x, int y ) {
while (x != y) {
if (H[x] > H[y])
x = T[x];
else y = T[y];
}
return x;
}
int main()
{
int i, x, y;
fin >> n >> m;
for (i = 2; i <= n; i++) {
fin >> T[i];
H[i] = H[ T[i] ]+1;
}
for (i = 1; i <= m; i++) {
fin >> x >> y;
fout << lca( x, y ) << "\n";
}
return 0;
}