Skip to main content

library_checker/tree/
rooted_tree_topological_order_with_minimum_inversions.rs

1use competitive::algorithm::solve_01_on_tree;
2use competitive::prelude::*;
3
4#[verify::library_checker("rooted_tree_topological_order_with_minimum_inversions")]
5pub fn rooted_tree_topological_order_with_minimum_inversions(
6    reader: impl Read,
7    writer: impl Write,
8) {
9    prepare_io!(reader, writer);
10    sc!(n, p: [usize; n - 1], c: [usize; n], d: [usize; n]);
11    let (cost, ord) = solve_01_on_tree(n, |u| (c[u], d[u]), 0, |u| p[u - 1]);
12    pp!(cost; @it ord);
13}