title: Runtime error when trying to find components in a graph
body: <p>I am trying to solve this <a href="https://www.hackerrank.com/challenges/components-in-graph" rel="nofollow noreferrer">graph problem</a> in Hackerrank and this is what I have so far. I am using a Python dictionary to represent the graph and have my DFS function return the length of the connected component that it traverses. My code passes the first test case but gives me a Runtime error for some of other other test cases. Is it an optimization problem? If so, which part of my code should I try optimizing? Or should I try a different approach altogether?</p>
  
  <pre><code>import sys
  n = input()
  # Graph
  g = {k:set() for k in xrange(2*n)}
  
  # DFS stuff
  visited = set()
  
  def dfs(g,s,S=set(),dfs_sum=0):
      S.add(s)
      dfs_sum +=1
      for i in g[s]:
          if i in S: continue
          dfs_sum = dfs(g,i,S,dfs_sum) 
      return dfs_sum
  
  # Building the graph
  for i in xrange(n):
      a,b = map(int,raw_input().split())
      g[a].add(b)
      g[b].add(a)
  
  # Getting the max and min lengths of the connected components
  max_len, min_len = 0, sys.maxint
  for i in xrange(n):
      if i not in visited:
          v = dfs(g,i,visited)
          if v &gt; 1: # Ignore single nodes
              max_len, min_len = max(max_len, v), min(min_len, v)
  print("{} {}".format(min_len,max_len))
  </code></pre>