Skip to main content

tree_mo_algorithm

Macro tree_mo_algorithm 

Source
macro_rules! tree_mo_algorithm {
    (vertices; $tree:expr, $root:expr, $paths:expr;
        |$u:tt| $add:expr, |$v:tt| $remove:expr, |$i:tt| $answer:expr $(,)?) => { ... };
    (edges; $tree:expr, $root:expr, $paths:expr;
        |$u:tt| $add:expr, |$v:tt| $remove:expr, |$i:tt| $answer:expr $(,)?) => { ... };
    (@run $trace:expr, $elements:expr, $ranges:expr;
        |$query:tt| $extra:expr; |$u:tt| $add:expr, |$v:tt| $remove:expr, |$i:tt| $answer:expr) => { ... };
    (@toggle $element:expr, $used:ident;
        |$u:tt| $add:expr, |$v:tt| $remove:expr) => { ... };
}
Expand description

vertices; tree, root, paths; |u| add, |u| remove, |i| answer, or edges; .... paths yields (u, v). Callbacks receive vertex or original edge IDs and input query IDs. Start with empty state; answer preserves it. The final state is unspecified. Path elements are unordered; answers are visited in Mo order.