dsalgo 0.3.10

A package for Datastructures and Algorithms.
Documentation
pub fn connected_components(g: &[Vec<usize>]) -> Vec<usize> {
    let n = g.len();

    let mut ids = vec![n; n];

    let mut id = 0;

    let mut st = vec![];

    for i in 0..n {
        if ids[i] != n {
            continue;
        }

        st.push(i);

        while let Some(u) = st.pop() {
            if ids[u] != n {
                continue;
            }

            ids[u] = id;

            for &v in g[u].iter() {
                if ids[v] == n {
                    st.push(v);
                }
            }
        }

        id += 1;
    }

    ids
}