aizu_online_judge/grl/
grl_6_b.rs

1use competitive::prelude::*;
2#[doc(no_inline)]
3pub use competitive::{algebra::AdditiveOperation, graph::PrimalDualBuilder};
4
5#[verify::aizu_online_judge("GRL_6_B")]
6pub fn grl_6_b(reader: impl Read, mut writer: impl Write) {
7    let s = read_all_unchecked(reader);
8    let mut scanner = Scanner::new(&s);
9    scan!(scanner, vs, es, f: u64, edges: [(usize, usize, u64, i64)]);
10    let mut builder = PrimalDualBuilder::new(vs, es);
11    builder.extend(edges.take(es));
12    let graph = builder.gen_graph();
13    let mut pd = builder.build(&graph);
14    let (flow, cost) = pd.minimum_cost_flow_limited(0, vs - 1, f);
15    writeln!(writer, "{}", if flow < f { -1 } else { cost }).ok();
16}