program graf; {Tari Judit - graf matrixban} uses crt; const maxpontszam=20; maxkimeno=10; type csucslista=array[1..maxpontszam,1..maxkimeno] of integer; mutato=^elem; elem=record pont:byte; kapcs:array[1..maxkimeno] of mutato; end; halmaz=set of byte; var stomb:array[1..maxpontszam] of mutato; csl:csucslista; n,g,max:integer; grafmut,gmut:mutato;{a grafra mutat} h:halmaz; procedure beolvasas; VAR m,i,j:integer; begin {Az ellenorzeseket meg bele kell irni, ne felejtsd el :))) } clrscr; writeln('HANY PONTJA VAN A GRAFNAK?'); readln(n); writeln('Hany el indul ki maximalisan egy pontbol?'); readln(max); For i:=1 to n do begin writeln('Az ',i,'. csucsbol hany el indul ki'); readln(m); For j:= 1 to m do begin writeln('Az ',i,'. csucsbol a ',j,'. el hova megy?'); readln(csl[i,j]); end; while j<=max do begin csl[i,j]:=0; j:=j+1; end; end; writeln('Hanyas pont a generalo pont?'); readln(g); end; procedure atalakitas(psz:integer;kf:integer;cs:csucslista;gp:integer;var gr:mutato); var i,j:integer; sm:mutato; Begin for i:=1 to psz do begin new(stomb[i]); stomb[i]^.pont:=i; for j:=1 to kf do begin if cs[i,j]=0 then stomb[i]^.kapcs[j]:=nil else stomb[i]^.kapcs[j]:=stomb[cs[i,j]]; end; end; gr:=stomb[gp]; End; procedure szelessegi(x:mutato); var svtomb:array[1..maxpontszam] of mutato; p:mutato; spont:elem; i,b:byte; Begin h:=[]; i:=1; svtomb[i]:=x; h:=h+[x^.pont]; While i>0 do begin p:=svtomb[i]; if i>1 then i:=i-1; writeln('A generaloponttol szamitott ',i,'. pont: ' ,p^.pont); For b:= 1 to max do begin spont.pont:=x^.kapcs[b]^.pont; spont.kapcs:=x^.kapcs[b]^.kapcs; if not(spont.pont in h) then begin h:=h+[spont.pont]; i:=i+1; svtomb[i]:=spont.kapcs[b]; end; end; end; End; BEGIN beolvasas; atalakitas(n,max,csl,g,grafmut); szelessegi(x); END.