title: How to find connected components?
body: <p>I'm writing a function <code>get_connected_components</code> for a class <code>Graph</code>:</p>
  
  <pre><code>def get_connected_components(self):
      path=[]
      for i in self.graph.keys():
          q=self.graph[i]
          while q:
              print(q)
              v=q.pop(0)
              if not v in path:
                  path=path+[v]
      return path
  </code></pre>
  
  <p>My graph is:</p>
  
  <pre><code>{0: [(0, 1), (0, 2), (0, 3)], 1: [], 2: [(2, 1)], 3: [(3, 4), (3, 5)], \
  4: [(4, 3), (4, 5)], 5: [(5, 3), (5, 4), (5, 7)], 6: [(6, 8)], 7: [], \
  8: [(8, 9)], 9: []}
  </code></pre>
  
  <p>where the keys are the nodes and the values are the edge. My function gives me this connected component:</p>
  
  <pre><code>[(0, 1), (0, 2), (0, 3), (2, 1), (3, 4), (3, 5), (4, 3), (4, 5), (5, 3), \
  (5, 4), (5, 7), (6, 8), (8, 9)]
  </code></pre>
  
  <p>But I would have two different connected components, like:</p>
  
  <pre><code>[[(0, 1), (0, 2), (0, 3), (2, 1), (3, 4), (3, 5), (4, 3), (4, 5), \
  (5, 3), (5, 4), (5, 7)],[(6, 8), (8, 9)]]
  </code></pre>
  
  <p>I don't understand where I made the mistake.
  Can anyone help me?</p>