program adjmatrix;
         { Nachbarschafts-Matrix eines ungerichteten Graphen }

uses crt;
const maxV = 'm';   { m ist der maximale Knoten !!!!!!!!!!!!!!! }

var  V,E,j  : integer;
     a      : array ['a'..maxV , 'a'..maxV] of boolean;
     v1,v2  : char;


procedure print_adj_matrix(knoten : char);
var z,s : char;
begin
 writeln('   A  B  C  D  E  F  G  H  I  J  K  L  M');
 for z:='a' to knoten do
  begin
    write(chr(ord(z)-32),' ');
    for s:='a' to knoten do
     if a[z,s]=true then write(' 1 ') else write('   '); writeln;
  end;
end;


begin
 clrscr;
 write('Geben Sie die Anzahl der Knoten und Kanten des Graphen ein :  ');
 readln(V,E);
 writeln;writeln;
 for v1:='a' to maxV do
  for v2:='a' to maxV do a[v1,v2]:=false;

 for j:=1 to E do
  begin
   write('Die ',j:2,'.  Kante geht von :  '); readln(v1);
   write('                   nach :  ');      readln(v2);
   a[v1,v2]:=true;
   a[v2,v1]:=true;
  end;

 readln;
 clrscr;
 print_adj_matrix(maxV);
 readln;
end.