We need something better than `DataStructures.DisjointSets` to iteratively build a set of disjoint trees, keeping track of the BFS order