3.8.3. DFS

A vertex has three states in DFS: undiscovered, discovered, finished.

The template for DFS:

dfs(r, p, graph, x)

where

r is the reference of full solution, which you want to return finally.
p is partial solution, which is element in r.
graph is graph you want to traverse.
x is used for termination condition of dfs.