• + 0 comments

    Python solution

    def componentsInGraph(gb):
        clusters = []
        for edge in gb:
            clusters_to_fuse = []
            for cluster in clusters:
                if edge[0] in cluster or edge[1] in cluster:
                    clusters_to_fuse.append(cluster)
            if clusters_to_fuse:
                fused_cluster = set(edge)
                for cluster in clusters_to_fuse:
                    for node in cluster:
                        fused_cluster.add(node)
                    clusters.remove(cluster)
                clusters.append(fused_cluster)
            else:
                clusters.append(set(edge))
        clusters_len = list(map(len, clusters))
        return [min(clusters_len), max(clusters_len)]