title: Cycle detection in a 2-tuple python list
body: <p>Given a list of edges in 2-tuple, (source, destination), is there any efficient way to determine if a cycle exists? Eg, in the example below, a cycle exists because 1 -> 3 -> 6 -> 4 -> 1.  One idea is to calculate the number of occurrence of each integer in the list (again, is there any efficient way to do this?). Is there any better way? I am seeing a problem with 10,000 of 2-tuple edge information.</p>
  
  <pre><code>a = [(1,3), (4,6), (3,6), (1,4)]
  </code></pre>