Creates a new BFS labeler for the specified graph and root set
The distances are stored in the corresponding Vertex objects and are of type MutableInteger
An edge permuter that permutes edges by sampling uniformly at random a given number of possible edges and for each
that exists that edge is removed and for each that doesn't exist that edge is added.
Finds all bicomponents (or blocks) in an undirected graph where a bicomponent is defined as s maximal set of nodes
and edges such that every pair of nodes is connected by two or more independent paths
Running time: O(|V| + |E|) where |V| is the number of vertices and |E| is the number of edges