Pagini recente » Cod sursa (job #2596199) | Cod sursa (job #1252841) | Cod sursa (job #1005360) | Cod sursa (job #1624509) | Cod sursa (job #2284213)
#include <stdio.h>
#include <math.h>
const int NMAX = 100005;
const int MMAX = 2000005;
int N, M;
int p[NMAX];
int main() {
freopen("lca.in", "r", stdin);
freopen("lca.out", "w", stdout);
scanf("%d %d", &N, &M);
p[1] = 1;
for (int i = 2; i <= N; ++i) {
scanf("%d", &p[i]);
}
for (int i = 0; i < M; ++i) {
int n, m;
scanf("%d %d", &n, &m);
while (n != m) {
if (n < m) {
m = p[m];
} else {
n = p[n];
}
}
printf("%d\n",n);
}
fclose(stdin);
fclose(stdout);
return 0;
}