pub trait Scc {
// Required methods
fn on_scc_found(&mut self, root: usize, scc_components: &[usize]);
fn get_next(&mut self, root: usize) -> FxHashSet<usize>;
fn get_size(&mut self) -> usize;
// Provided methods
fn find_scc(&mut self) { ... }
fn tarjan(
&mut self,
index: usize,
stack: &mut Vec<usize>,
instack: &mut FxHashSet<usize>,
dfn: &mut Vec<usize>,
low: &mut Vec<usize>,
time: &mut usize,
) { ... }
}