Witam!
A więc mam program w Pascalu, który przeszukuje drzewo, jednak coś on mi do końca nie działa, gdyż w programie mam dwie zmienne: ilość wierzchołków i ilość krawędzi, pierwsza zmienna chodzi idealnie, zawsze wyszukuje drogę, jednak tylko dla ilości krawędzi** równej zero**, dla ilości krawędzi różnej od zera program się zawiesza...
Co jest źle? Myślę nad tym od dobrego tygodnia i nic nie mogę wymyśleć...
A oto i kod programu:
Const
MaxIloscWezlow = 100;
Type
TypWezla = Word;
Kolory = (bialy, szary, czarny);
Barwy = Array[1..MaxIloscWezlow] Of Kolory;
Graf = Array[1..MaxIloscWezlow, 1..MaxIloscWezlow] Of Boolean;
Var
a : Graf;
b : Barwy;
d : Array[1..MaxIloscWezlow] Of TypWezla;
g1, g2 : Array[1..MaxIloscWezlow] Of TypWezla;
n, k : TypWezla;
Procedure Odwiedz(k : TypWezla; Var krok : TypWezla);
Var
j : TypWezla;
Begin
krok:=krok+1;
g1[k]:=krok;
b[k]:=szary;
For j:=1 To n Do
If a[k, j] And (b[j]=bialy) Then
Begin
d[j]:=k;
Odwiedz(j, krok);
End;
krok:=krok+1;
g2[k]:=krok;
b[k]:=czarny;
End;
Var
i, j, t, czas : TypWezla;
Begin
Write('Ilosc wierzcholkow = ');
ReadLn(n);
Write('Ilosc krawedzi = ');
ReadLn(k);
{Inicjacja tablic}
For i:=1 To n Do
For j:=1 To n Do a[i, j]:=False;
For i:=1 To n Do
Begin
d[i]:=0;
g1[i]:=0;
g2[i]:=0;
b[i]:=bialy;
End;
{Wczytaj krawedzie}
For t:=1 To k Do
Begin
ReadLn(i, j);
a[i, j]:=True;
End;
{Odwiedz wszystkie biale wierzcholki grafu}
czas:=0;
For i:=1 To n Do
If b[i]=bialy Then Odwiedz(i, czas);
For t:=1 To k Do
Begin
WriteLn('Podaj krawedz [',t,'] : ');
ReadLn(i, j);
a[i, j]:=True;
End;
WriteLn('Wierzcholek : Rozpoczeto : Zakonczono :');
For i:=1 To n Do
WriteLn(i, ' : ', g1[i], ' : ', g2[i]);
ReadLn;
End.
Pozdrawiam!
Z góry dziękuję za pomoc:)