Dim visited(100), found As Boolean
Dim dist(100) As Integer
Dim que(100) As Integer
Dim n, turn As Integer
Private Sub CommandButton1_Click()
n = 24
For j = 1 To n
For i = 1 To n
visited(i) = False
Next i
TextBox1.Text = TextBox1.Text & vbCrLf & vbCrLf & Cells(j, n + 1) & " "
Call DFS(j)
Next j
End Sub
Sub DFS(ByVal x As Integer)
visited(x) = True
For i = 1 To n
If Cells(x, i) = 1 And Not visited(i) Then
TextBox1.Text = TextBox1.Text & "-->" & Cells(i, n + 1) & " "
Call DFS(i)
End If
Next i
End Sub
Private Sub CommandButton2_Click()
n = 24
found = False
For j = 1 To n
For i = 1 To n
visited(i) = False
Next i
TextBox1.Text = TextBox1.Text & vbCrLf & vbCrLf & "started from " & Cells(j, n + 1) & vbCrLf
visited(j) = True
found = False
Call CHK(j, 0)
If found Then
TextBox1.Text = TextBox1.Text & vbCrLf & "--> There exists at least one cycle !"
Else
TextBox1.Text = TextBox1.Text & vbCrLf & "--> Do NOT find any cycle !"
End If
Next j
End Sub
Sub CHK(ByVal x As Integer, ByVal px As Integer)
For i = 1 To n
If Cells(x, i) = 1 And visited(i) And i <> px Then
TextBox1.Text = TextBox1.Text & "-->" & Cells(i, n + 1) & " "
found = True
Exit For
End If
Next i
For i = 1 To n
If found Then Exit For
If Cells(x, i) = 1 And Not visited(i) Then
TextBox1.Text = TextBox1.Text & "-->" & Cells(i, n + 1) & " "
visited(i) = True
Call CHK(i, x)
End If
Next i
End Sub