code: def dfs_recursive(graph, node, seen):
      
      seen[node] = True
      for neighbor in graph[node]:
          if not seen[neighbor]:
              dfs_recursive(graph, neighbor, seen)
docs: DFS, detect connected component, recursive 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|)`