input = Graph graph initialize path as List forEach vertex in graph.vertices call findCircuit(vertex, path, graph) next say("no circuit") finish function findCircuit(Vertex vertex, List path, Graph graph) ask: call path.add(vertex) ask: vertex.isVisited = true if path.length() = graph.vertices.length() then say("done") finish else forEach u in unvisitedNeighbors(vertex) call findCircuit(u, path, graph) next endIf vertex.isVisited = false call path.remove(vertex) return 0 endFunction function unvisitedNeighbors(Vertex v) initialize neighbors as List forEach n in v.neighbors if n.isVisited != true then call neighbors.add(n) endIf next return neighbors endFunction