Cod sursa(job #569470)
Utilizator | Data | 1 aprilie 2011 15:36:32 | |
---|---|---|---|
Problema | Lowest Common Ancestor | Scor | 0 |
Compilator | fpc | Status | done |
Runda | Arhiva educationala | Marime | 0.51 kb |
var a:array[1..100000] of longint;
n,m,i,t,u,v:longint;
f,g:text;
begin
assign(f,'lca.in');
assign(g,'lca.out');
reset(f);
rewrite(g);
readln(f,n,m);
for i:=1 to n-1 do
read(f,a[i]);
for i:=1 to m do
begin
readln(f,u,v);
dec(u);
dec(v);
if u>v then begin t:=u; u:=v; v:=t; end;
while (a[u]<>a[v])and(u<>a[v]-1)and(v<>a[u]) do
if a[u]>a[v] then u:=a[u]-1 else v:=a[v]-1;
writeln(g,a[v]);
end;
close(g);
end.