def __init__(self, v=0, **kwargs): self.V = v self.E = 0 self.adj = {} for v in range(self.V): self.adj[v] = Bag() if 'file' in kwargs: # init a digraph by a file input in_file = kwargs['file'] self.V = int(in_file.readline()) for v in range(self.V): self.adj[v] = Bag() E = int(in_file.readline()) for i in range(E): v, w, weight = in_file.readline().split() self.add_edge(DirectedEdge(int(v), int(w), float(weight)))
if not self.marked[w]: self.dfs(G, w) def connected(self, v, w): return self.id[v] == self.id[w] if __name__ == "__main__": import sys f = open(sys.argv[1]) s = int(sys.argv[2]) V = int(f.readline()) E = int(f.readline()) g = Graph(V) for i in range(E): v, w = f.readline().split() g.add_edge(v, w) cc = CC(g) print(cc.count, " components") components = [] for i in range(cc.count): components.append(Bag()) for v in range(g.V): components[cc.id[v]].add(v) for i in range(cc.count): for v in components[i]: print(v, " ", end='') print()
def __init__(self, v): self.V = v self.E = 0 self.adj = {} for v in range(self.V): self.adj[v] = Bag()