pub struct LowestCommonAncestor<'a, D: LcaMonoidDispatch> { /* private fields */ }
Implementations§
Source§impl<D: LcaMonoidDispatch> LowestCommonAncestor<'_, D>
impl<D: LcaMonoidDispatch> LowestCommonAncestor<'_, D>
Sourcepub fn lca(&self, u: usize, v: usize) -> usize
pub fn lca(&self, u: usize, v: usize) -> usize
Examples found in repository?
crates/library_checker/src/graph/lca.rs (line 18)
9pub fn lca_euler_tour(reader: impl Read, mut writer: impl Write) {
10 let s = read_all_unchecked(reader);
11 let mut scanner = Scanner::new(&s);
12 scan!(scanner, n, q, p: [usize]);
13 let edges = p.take(n - 1).enumerate().map(|(i, p)| (i + 1, p)).collect();
14 let graph = UndirectedSparseGraph::from_edges(n, edges);
15 let euler = EulerTourForRichVertex::new(0, &graph);
16 let lca = euler.gen_lca::<LcaMonoidDefaultId>();
17 for (u, v) in scanner.iter::<(usize, usize)>().take(q) {
18 writeln!(writer, "{}", lca.lca(u, v)).ok();
19 }
20}
More examples
crates/aizu_online_judge/src/grl/grl_5_c.rs (line 24)
10pub fn grl_5_c(reader: impl Read, mut writer: impl Write) {
11 let s = read_all_unchecked(reader);
12 let mut scanner = Scanner::new(&s);
13 scan!(scanner, n, c: [SizedCollect<usize>]);
14 let edges = c
15 .take(n)
16 .enumerate()
17 .flat_map(|(u, it)| it.into_iter().map(move |v| (u, v)))
18 .collect();
19 let graph = UndirectedSparseGraph::from_edges(n, edges);
20 let et = EulerTourForRichVertex::new(0, &graph);
21 let lca = et.gen_lca::<LcaMonoidDefaultId>();
22 scan!(scanner, q, uv: [(usize, usize)]);
23 for (u, v) in uv.take(q) {
24 writeln!(writer, "{}", lca.lca(u, v)).ok();
25 }
26}
Trait Implementations§
Source§impl<'a, D: Clone + LcaMonoidDispatch> Clone for LowestCommonAncestor<'a, D>
impl<'a, D: Clone + LcaMonoidDispatch> Clone for LowestCommonAncestor<'a, D>
Source§fn clone(&self) -> LowestCommonAncestor<'a, D>
fn clone(&self) -> LowestCommonAncestor<'a, D>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl<'a, D> Freeze for LowestCommonAncestor<'a, D>
impl<'a, D> RefUnwindSafe for LowestCommonAncestor<'a, D>
impl<'a, D> Send for LowestCommonAncestor<'a, D>
impl<'a, D> Sync for LowestCommonAncestor<'a, D>
impl<'a, D> Unpin for LowestCommonAncestor<'a, D>
impl<'a, D> UnwindSafe for LowestCommonAncestor<'a, D>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more