Skip to main content

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}