library_checker/tree/
rooted_tree_topological_order_with_minimum_inversions.rs1use 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}