Pagini recente » Cod sursa (job #2799216) | Cod sursa (job #362728) | Cod sursa (job #3279957) | Cod sursa (job #1083308) | Cod sursa (job #579726)
Cod sursa(job #579726)
var v:array [1..100000] of longint;
niv:array [1..100000] of longint;
buf1, buf2:array [1.. 1 shl 17] of char;
i, j, m, n, x, y:longint;
f, g:text;
begin
assign (f, 'lca.in'); settextbuf (f, buf1); reset (f);
assign (g, 'lca.out'); settextbuf (g, buf2); rewrite (g);
read (f, n, m);
v[1]:=0; niv[1]:=1;
for i := 2 to n do
begin
read (f, v[i]); niv[i]:=niv[v[i]]+1;
end;
for i := 1 to m do
begin
read (f, x, y);
if niv[x]>niv[y] then begin while niv[x]<> niv[y] do x:=v[x]; end
else begin while niv[x]<> niv[y] do y:=v[y]; end;
while x <> y do begin x:=v[x]; y:=v[y]; end;
writeln (g, x);
end;
close (f); close (g);
end.