Witam, robię program, który wczytuje graf i robi na nim niepełnego DFS'a, jednak w jednej z procedur coś jest nie tak i nie potrafię znaleźć błędu, proszę o pomoc:
type lista=^element;
element = record
pole:integer;
next:lista
end;
type graf=array [1..11] of lista;
type kolory=(czarny,szary,bialy);
var
i, time: integer;
ef: array[1..11] of integer;
kolor: array[1..11] of kolory;
LI: graf;
f: text;
procedure wczytaj_graf (var f:text);
var
a, b: integer;
l: lista;
begin
for i := 1 to 10 do
LI[i] := nil;
while not eof(f) do
begin
readln(f, a, b);
l := LI[a];
new(LI[a]);
LI[a]^.pole := b;
I[a]^.next := l;
end;
end;
procedure DFS_odwiedz(u:integer);
var
v: lista;
begin
kolor[u] := szary;
v := LI[u];
time := time + 1;
while v<>nil do
begin
writeln(v^.pole);
if kolor[v^.pole] = bialy then
DFS_odwiedz(v^.pole);
end;
kolor[u] := czarny;
time := time + 1;
ef[u] := time;
end;
procedure DFS;
begin
for i := 1 to 10 do
kolor[i] := bialy;
time := 0;
for i := 1 to 10 do
if kolor[i] = bialy then
DFS_odwiedz(i);
end;
begin
assign(f, 'C:\FPC\Pascall.txt');
reset(f);
wczytaj_graf(f);
close(f);
DFS;
writeln(':)');
readln;
end.
Graf, który sobie wczytuję to:
1->2->3->4->5->6->7->8->9 i program w nieskończoność wypisuje 9.
Dzięki za pomoc.