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}