Code
Program TreeAnalize;
Uses CRT;
Const MaxSize = 20;
Var a: Array[1..MaxSize, 1..MaxSize] of Byte;
i,j: Byte;
n: Byte;
Procedure WriteMatrix;
Begin
Write('How many vertex?: '); Readln(n);
Writeln('e.g. "[1 -> 3]: 1" if ver.3 & ver.1 - linked');
Writeln('e.g. "[2 -> 5]: 0" if ver.2 & ver.5 - no linked');
Writeln;
For i := 1 to n-1 do
Begin
For j := i + 1 to n do
Begin
Write('[',i,' -> ',j,']: ');
Readln(a[i,j]);
a[j,i] := a[i,j];
End;
End;
End;
Procedure PrintMatrix;
Begin
Writeln;
For i := 1 to n do
Begin
For j := 1 to n do
Write(a[i,j]:4);
Writeln;
End;
End;
Function AnalizeMatrix: Boolean;
Var col: boolean;
k: Byte;
result: Boolean;
Begin
result := True;
For i := 2 to n do
Begin
Col := false;
For j := 1 to i do
Begin
if (a[i,j] = 1) then
Begin
if (Col = false) then Col := True
else Begin
result := false;
Write('Loop in: ',j,' -> ', i);
For k := j-1 downto 1 do
if (a[i,k] = 1) then
Begin
Writeln(' -> ',k);
Break
End;
End;
End;
End;
End;
AnalizeMatrix := result;
End;
Begin
ClrScr;
WriteMatrix;
PrintMatrix;
ReadKey;
if (AnalizeMatrix) then Writeln('Clear!!!')
else Writeln('Loop found!');
ReadKey;
End.
Задаёте матрицу смежности как в той задаче с проверкой простой. Чтобы не запутаться - нарисуйте дерево сначала на бумажке )
Прогу потестил на 3-х графах! Простые петли определяет неплохо!