{ Jednoduchy ukazkovy program na reprezentaci grafu pomoci matice sousednosti }
{ Pouziva pouze 1 (je hrana), 0 neni }
{ Z webu http://teorie-grafu.elfineer.cz, Bc. prace z MFF UK, Lukas Jirovsky }
program GRAFMATICE1;

const
  velikost_matice = 10;

type
  typ_matice = array[1..velikost_matice,1..velikost_matice] of integer;

var
  matice1: typ_matice;

procedure vycistiMatici(var matice:typ_matice);
var
  i, j: integer;
begin
  for i:=1 to velikost_matice do
    begin
    for j:= 1 to velikost_matice do
      begin
      matice[i,j]:= 0;
      end;
    end;
end;

procedure zadejHranu(odkud: integer; kam: integer; var matice:typ_matice);
begin
  matice[odkud,kam]:= 1;
  matice[kam,odkud]:= 1;
end;

procedure odeberHranu(odkud: integer; kam: integer; var matice:typ_matice);
begin
  matice[odkud,kam]:= 0;
  matice[kam,odkud]:= 0;
end;

function jeHrana(odkud: integer; kam: integer; var matice:typ_matice):boolean;
begin
  if(matice[odkud,kam] = 1) then jeHrana:=true else
                                 jeHrana:=false;
end;

procedure vypisMatici(var matice:typ_matice);
var
   i,j: integer;
begin
   writeln('Matice:');
   for i:=1 to velikost_matice do
    begin
     for j:= 1 to velikost_matice do
      begin
      write(matice[i,j]);
      end;
     writeln;
    end;
    writeln('--->KONEC MATICE---->');
    writeln;
end;

begin
  {samotny program}
  vycistiMatici(Matice1);
  vypisMatici(Matice1);

  {zadani nekolika testovacich hran}
  zadejHranu(1,2,Matice1);
  zadejHranu(2,3,Matice1);
  zadejHranu(2,4,Matice1);

  vypisMatici(Matice1);

  readln;
end.
