Since the `search()`

method is recursive, we need to provide an exit condition, otherwise we could end up in an infinite loop searching the graph. We should add this exit condition to the beginning of our `search()`

method.

The exit condition should be checked first in the `search()`

method. Before exiting the recursion, we should check if:

- All vertices have been visited, and there are no duplicate vertices in the
`path`

list. This means that a Hamiltonian path has been found. Append it to the`hpaths`

list if so.*In our bus route scenario, this means that we have started at “School” and every student has been picked up and that we may or may not be back at the “School” vertex by the end of the path.*

- The current vertex equals the
`start`

vertex**and**the number of vertices we have visited in our`path`

list equals the number of vertices in our vertices list, plus 1. We must add 1 here since the starting vertex will show in this list twice. If we meet this condition, we should add the path to the`cycles`

list.*This means we have started at “School”, picked up every student, and are back at the “School” vertex.*

### Instructions

**1.**

Review the stop condition implementation within `script.py`

to understand the conditional checks that will determine if a Hamiltonian path and/or cycle exist.

**2.**

Execute the full code on the school bus route graph/adjacency matrix. You should get the following Hamiltonian paths and cycles found:

Hamiltonian paths:[0, 1, 2, 3, 4], [0, 4, 3, 2, 1]

Hamiltonian cycles:[0, 1, 2, 3, 4, 0], [0, 4, 3, 2, 1, 0]

If you do not get the above results, recheck your `search()`

method logic.