Connected components are subsets of a graph in which every node is reachable from every other node in that subset by following edges. These components often represent distinct groups or communities within a graph. Your task is to repurpose Depth-First Search (DFS) or Breadth-First Search (BFS) to determine the number of connected components in any given graph. Your code should print the number of connected components and return a dictionary with component id as key and list of nodes as values.