code: def cut_edges(graph):
      
      recursionlimit = getrecursionlimit()
      setrecursionlimit(max(len(graph.nodes())*2,recursionlimit))
  
      # Dispatch if we have a hypergraph
      if 'hypergraph' == graph.__class__.__name__:
          return _cut_hyperedges(graph)
  
      pre = {}    # Pre-ordering
      low = {}    # Lowest pre[] reachable from this node going down the spanning tree + one backedge
      spanning_tree = {}
      reply = []
      pre[None] = 0
  
      for each in graph:
          if (each not in pre):
              spanning_tree[each] = None
              _cut_dfs(graph, spanning_tree, pre, low, reply, each)
      
      setrecursionlimit(recursionlimit)
      return reply
docs: Return the cut-edges of the given graph.
      
      A cut edge, or bridge, is an edge of a graph whose removal increases the number of connected
      components in the graph.
      
      @type  graph: graph, hypergraph
      @param graph: Graph.
      
      @rtype:  list
      @return: List of cut-edges.