Hej mam problem z algorytmem przeszukiwania grafów DFS ?( w glab) na podstawie macierzy sasiedztw.. cos tam wiem ale nie wiem czy jest to poprawne myslenie, jak z tego np odczytac liczbe komponent albo czy graf jest spojny ponizej zamiescilam swoj kod
program nasz;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
maxn=10000;
type
element1=longword;
element2=string[2];
tab2=array[1..maxn,1..maxn] of element1;
tab1=array[1..maxn] of element2;
var a:tab2;
b:tab1;
n,i,j,p,x:element1;
procedure generuj_macierz_sas(var a:tab2;n:longword);
var i,j:longword;
begin
for i:=1 to n do
a[i,i]:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
a[i,j]:=random(2);
for i:=1 to n do
for j:=1 to n do
if i>j then a[i,j]:=a[j,i];
end;
//------------------------------------------------------------------------------
procedure wypisz_tab(var a:tab2;n:longword);
var i,j: longword;
begin
for i:=1 to n do
begin
writeln;
for j:=1 to n do
write(a[i,j],' ');
end;
end;
//------------------------------------------------------------------------------
procedure wypisz_tab1(var b:tab1;n:longword);
var i,j: longword;
begin
for i:=1 to n do
writeln(b[i]);
end;
//------------------------------------------------------------------------------
procedure tworz_tab1( var b:tab1; n:longword);
var i,j:longword;
begin
for i:=1 to n do
b[i]:='F';
end;
//------------------------------------------------------------------------------
procedure DFS(var a:tab2; var b:tab1;n:element1; x:element1);
var i:longword;
begin
*b[x]:='T';*nie wiem czy to jest potrzebne wg mnie nie !
for i:=x to n do
for j:=1 to n do
begin
if (b[i]='F') and (a[i,j]=1) then
begin
b[i]:='T';
DFS(a,b,n,j);
end;
end;
end;
begin
randomize;
writeln('Podaj liczbe wierzcholkow, nie wieksza niz ', maxn,' : ');
readln(n);
writeln('Podaj x : ');
readln(x);
generuj_macierz_sas(a,n);
wypisz_tab(a,n);
writeln;
writeln;
tworz_tab1(b,n);
//DFS(a,b,n,i,j);
DFS(a,b,n,x);
writeln;
wypisz_tab1(b,n);
readln;
end.
prosze szybko o wskazowki z gory dzieki!!!