def connected_components_dj(g): djset = DisjointSet() for v in g.vertices: djset.make_set(v) for v1, v2 in g.edges: if djset.find_set(v1) != djset.find_set(v2): djset.union(v1, v2) return djset.get_set()