Консультация № 198370
25.04.2020, 07:24
0.00 руб.
0 0 0
Здравствуйте! Подскажите, пожалуйста, как в оринтеированном графе можно рассмотреть все имеющиеся в нёс циклы и вывести их. Реалиация с помощью метода обхода в глубину. Вот прогрмма, у меня не получается придумать условие, чтобы находить цикл[code lang=pascal]const
n=5;
var
i, j, start: integer;
visited: array[1..n] of boolean;
const graph: array[1..n,1..n] of byte =
((0, 1, 0, 0, 1),
(1, 0, 1, 1, 0),
(0, 1, 0, 0, 1),
(0, 1, 0, 0, 1),
(1, 0, 1, 1, 0));
{поиск в глубину}

procedure DFS(st: integer);
var r: integer;
begin
write(st:2);
visited[st]:=true;
for r:=1 to n do
if (graph[st, r]<>0) and (not visited[r]) then
DFS(r);
end;
{основной блок программы}
begin
writeln('Матрица смежности:');
for i:=1 to n do
begin
visited[i]:=false;
for j:=1 to n do
write(graph[i, j],' ');
writeln;
end;
for i:=1 to n do begin
DFS(i);
for j:=1 to n do
visited[j]:=false;
writeln();
end;
end.[/code]

Обсуждение

Форма ответа