{ File: grafmat.pas }

{ Scopo: rappresentazione di grafi non etichettati tramite matrice di
         adiacenza }


{ Le dichiarazioni di tipo per i grafi richiedono la definizione preliminare di

const
  NumNodi = ... ;
}

type
  TipoNodo  = 1..NumNodi;
  TipoGrafo = record
                matr_adiacenza : array [TipoNodo, TipoNodo] of boolean
              end;             


procedure InitGrafo (var grafo: TipoGrafo);
{ Inizializza un grafo. }
var
  i,j : TipoNodo;
begin
  for i := 1 to NumNodi do
    for j := 1 to NumNodi do
      grafo.matr_adiacenza[i,j] := FALSE
end; { InitGrafo }


function TestEsisteArco (var grafo: TipoGrafo; i,j: TipoNodo): boolean;
{ Verifica l'esistenza di un arco in un grafo. }
begin
  TestEsisteArco := grafo.matr_adiacenza[i,j]
end; { TestEsisteArco }


procedure InserArco (var grafo: TipoGrafo; i,j: TipoNodo);
{ Inserisce un arco in un grafo. }
begin
  grafo.matr_adiacenza[i,j] := TRUE
end; { InserArco }


procedure ElimArco (var grafo: TipoGrafo; i,j: TipoNodo);
{ Elimina un arco da un grafo. }
begin
  grafo.matr_adiacenza[i,j] := FALSE
end; { ElimArco }