pub fn bfs<G, N>(edges: &Collection<G, (N,N)>, roots: &Collection<G, N>) -> Collection<G, (N,u32)>
where
    G: Scope,
    G::Timestamp: Lattice+Ord,
    N: ExchangeData+Hash,
{
    use crate::operators::arrange::arrangement::ArrangeByKey;
    let edges = edges.arrange_by_key();
    bfs_arranged(&edges, roots)
}
Returns pairs (node, dist) indicating distance of each node from a root.
differential-dataflow/src/algorithms/graphs/bfs.rs