library_checker/graph/directedmst.rs
1use competitive::prelude::*;
2use competitive::{algebra::AdditiveOperation, graph::EdgeListGraphScanner};
3
4#[verify::library_checker("directedmst")]
5pub fn directedmst(reader: impl Read, writer: impl Write) {
6 prepare_io!(reader, writer);
7 sc!(n, m, s, (graph, w): @EdgeListGraphScanner::<usize, i64>::new(n, m));
8 let res = graph
9 .minimum_spanning_arborescence::<AdditiveOperation<_>, _>(s, |u| w[u])
10 .unwrap();
11 pp!(res.0; @it res.1);
12}