def __init__(self, G): super(Topological, self).__init__() cyclefinder = DirectedCycle(G) if not cyclefinder.has_cycle(): dfo = DepthFirstOrder(G) self.order = dfo.get_reversePost() else: self.order = []
def __init__(self, G): super(KosarajuSCC, self).__init__() self.marked = [0 for i in xrange(G.Vcount())] self.id = [-1 for i in xrange(G.Vcount())] self.count = 0 order = DepthFirstOrder(G.reverse()) for s in order.get_reversePost()[::-1]: # pop the reverse post stack if not self.marked[s]: self.dfs(G, s) self.count += 1