program lihtgraafidemo; const maxN=100; {Suurim võimalik tippude arv} var N: integer; {Tippude tegelik arv} g: array[1..maxN, 1..maxN] of integer; {Graaf ise. Rea ja veeru ristumiskohas olev 0 näitab, et serv vastavate nurkade vahel puudub, 1 aga, et serv on olemas. Andmed hoitakse sümmeetrilisena. St., et kui tipust a saab tippu b, siis saab ka vastupidi. } procedure tyhjenda; var rida: integer; veerg: integer; begin for rida:=1 to N do for veerg:=1 to N do g[rida, veerg]:=0; end; procedure serv(tipp1, tipp2: integer); {Serva loomine} begin g[tipp1, tipp2]:=1; g[tipp2, tipp1]:=1; end; procedure kirjuta; {trükitakse ekraanile kõik leitud servad} var rida: integer; veerg: integer; begin for rida:=1 to N-1 do for veerg:=1 to rida do if g[rida, veerg]=1 then writeln(rida,'-', veerg); end; procedure kirjutaMassiiv; {Ekraanile trükitakse massiivis leiduvad nullid/ühed} var rida, veerg: integer; begin for rida:=1 to N do begin for veerg:=1 to N do write(g[rida, veerg]:5); writeln; end; end; function kasServ(tipp1, tipp2: integer): boolean; {Teatatakse, kas etteantud tippude vahel leidub serv} begin if g[tipp1, tipp2]=1 then kasServ:=true else kasServ:=false; end; procedure looJuhuServ; var rida, veerg: integer; begin repeat rida:=random(N)+1; veerg:=random(N)+1; until not (kasServ(rida, veerg) or (rida=veerg)); serv(rida, veerg); end; procedure looJuhuGraaf(tippudeArv, servadeArv: integer); var i: integer; begin n:=tippudeArv; tyhjenda; for i:=1 to servadeArv do looJuhuServ; end; procedure paigutaServad; begin serv(1, 3); serv(3, 5); end; procedure alusta; begin randomize; N:=10; tyhjenda; {paigutaServad;} looJuhuGraaf(10, 30); end; begin alusta; kirjuta; kirjutaMassiiv; writeln(kasServ(5, 4)); end.