title: Algorithm for counting connected components of a graph in Python
body: <p>I try to write a script that counts connected components of a graph and I can't get the right solution.
  I have a simple graph with 6 nodes (vertexes), nodes 1 and 2 are connected, and nodes 3 and 4 are connected (6 vertexes; 1-2,3-4,5,6). So the graph contains 4 connected components. I use following script to count connected components, but I get wrong result (2).</p>
  
  <pre><code>nodes = [[1, [2], False], [2, [1], False], [3, [4], False], [4, [3], False], [5, [], False], [6, [], False]]
  # 6 nodes, every node has an id, list of connected nodes and boolean whether the node has already been visited    
  
  componentsCount = 0
  
  def mark_nodes( list_of_nodes):
      global componentsCount
      componentsCount = 0
      for node in list_of_nodes:
        node[2] = False
        mark_node_auxiliary( node)
  
  def mark_node_auxiliary( node): 
      global componentsCount
      if not node[2] == True: 
        node[2] = True
        for neighbor in node[1]:
          nodes[neighbor - 1][2] = True
          mark_node_auxiliary( nodes[neighbor - 1])
      else:
        unmarkedNodes = []
        for neighbor in node[1]:
          if not nodes[neighbor - 1][2] == True:  # This condition is never met. WHY???
            unmarkedNodes.append( neighbor)
            componentsCount += 1   
        for unmarkedNode in unmarkedNodes:
          mark_node_auxiliary( nodes[unmarkedNode - 1])
  
  def get_connected_components_number( graph):
      result = componentsCount
      mark_nodes( graph)
      for node in nodes:
        if len( node[1]) == 0:      # For every vertex without neighbor...  
          result += 1               # ... increment number of connected components by 1.
      return result
  
  print get_connected_components_number( nodes)
  </code></pre>
  
  <p>Can anyone please help me find the mistake?</p>