dsalgo 0.3.10

A package for Datastructures and Algorithms.
Documentation
use crate::union_find_low_memory::UnionFind;

pub fn connected_components(
    v_size: usize,
    edges: &[(usize, usize)],
) -> Vec<usize> {
    let mut uf = UnionFind::new(v_size);

    for &(u, v) in edges {
        uf.unite(u, v);
    }

    uf.labels()
}

#[cfg(test)]

mod tests {

    use super::*;

    #[test]

    fn test() {
        let n = 3;

        let edges = vec![(0, 1)];

        assert_eq!(connected_components(n, &edges), [0, 0, 1]);
    }
}