pub fn to_dense(sparse: &[usize]) -> (Vec<usize>, usize)
compress a sparse mapping into a set [0..A) into a surjective mapping into a set [0..num_components)
[0..A)
[0..num_components)