1BSD/tests/ancestor2.p

program ancestor2(output);
{ancestor algorithm using sets instead of boolean matrix}
  const n = 100;
  var i,j: integer;
      r: array [1..n] of set of 1..n;
begin { j in r[i] = "i is a parent of j"}
  for i := 1 to n do
    if i mod 10 <> 0 then r[i] := [i+1] else r[i] := [];
  writeln(clock);
  for i := 1 to n do
    for j := 1 to n do
      if i in r[j] then
		r[j] := r[i]+r[j];
  writeln(clock);
  for i := 1 to n do
  begin write(' ');
    for j := 1 to n do
      if j in r[i] then write('1') else write('.');
    writeln
  end ;
  writeln(clock)
end .