library_checker/tree/
rooted_tree_topological_order_with_minimum_inversions.rs1#[doc(no_inline)]
2pub use competitive::algorithm::solve_01_on_tree;
3use competitive::prelude::*;
4
5#[verify::library_checker("rooted_tree_topological_order_with_minimum_inversions")]
6pub fn rooted_tree_topological_order_with_minimum_inversions(
7 reader: impl Read,
8 mut writer: impl Write,
9) {
10 let s = read_all_unchecked(reader);
11 let mut scanner = Scanner::new(&s);
12 scan!(scanner, n, p: [usize; n - 1], c: [usize; n], d: [usize; n]);
13 let (cost, ord) = solve_01_on_tree(n, |u| (c[u], d[u]), 0, |u| p[u - 1]);
14 iter_print!(writer, cost; @it ord);
15}