code: def dfs_iterative(graph, start, seen):
      
      seen[start] = True
      to_visit = [start]
      while to_visit:
          node = to_visit.pop()
          for neighbor in graph[node]:
              if not seen[neighbor]:
                  seen[neighbor] = True
                  to_visit.append(neighbor)
docs: DFS, detect connected component, iterative implementation
  
      :param graph: directed graph in listlist or listdict format
      :param int node: to start graph exploration
      :param boolean-table seen: will be set true for the connected component
            containing node.
      :complexity: `O(|V|+|E|)`