Skip to main content

library_checker/graph/
scc.rs

1use competitive::graph::{DirectedSparseGraph, StronglyConnectedComponent};
2use competitive::prelude::*;
3
4#[verify::library_checker("scc")]
5pub fn scc(reader: impl Read, writer: impl Write) {
6    prepare_io!(reader, writer);
7    sc!(vs, es, edges: [(usize, usize); es]);
8    let graph = DirectedSparseGraph::from_edges(vs, edges);
9    let scc = StronglyConnectedComponent::new(&graph);
10    let comp = scc.components();
11    pp!(comp.len());
12    for vs in comp.into_iter() {
13        pp!(vs.len(), @it vs);
14    }
15}