GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 98.4% 121 / 0 / 123
Functions: 100.0% 55 / 0 / 55
Branches: 94.4% 34 / 0 / 36

src/tree/hld/lib.hpp
Line Branch Exec Source
1 #pragma once
2
3 #include "../../ds/segtree/hp/lib.hpp"
4 #include "../dfs/info/lib.hpp"
5 #include "../dfs/top/lib.hpp"
6 #include "../ds/lib.hpp"
7
8 namespace tifa_libs {
9 namespace hld_impl_ {
10 template <bool enable_tag, tree_c tree_t, class T, auto op, class F, auto mapping, auto composition>
11 class hld {
12 segtree_impl_::segtree<enable_tag, T, op, F, mapping, composition> t;
13
14 public:
15 using tree_info_t = tree_dfs_info<tree_t, tdi_dfn, tdi_maxson, tdi_dep, tdi_fa>;
16
17 tree_t CR tr;
18 tree_info_t info;
19 vecu top;
20
21 343 CEXP hld(cT_(T) e, cT_(F) id, tree_t CR tr, tree_info_t CR info_) NE : t(e, id), tr(tr), info{info_}, top(tree_top<tree_t, true>(tr, info.dfn, info.maxson)) {}
22 103 CEXP hld(cT_(T) e, cT_(F) id, tree_t CR tr) NE : hld(e, id, tr, tree_info_t(tr)) {}
23 240 CEXP hld(cT_(T) e, cT_(F) id, tree_t CR tr, tree_info_t CR info_, spn<T> a) NE : hld(e, id, tr, info_) {
24 240 vec<T> b(a.size());
25
24/24
tifa_libs::hld_impl_::hld<true, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >, &(op_ab(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >)), std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >, &(mapping(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >)), &(composition(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >))>::hld(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > > const&, tifa_libs::tree_dfs_info<tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, tifa_libs::tdi_dfn, tifa_libs::tdi_maxson, tifa_libs::tdi_dep, tifa_libs::tdi_fa> const&, std::span<std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > > const, 18446744073709551615ul>):
✓ Branch 5 taken 2334317 times.
✓ Branch 6 taken 20 times.
tifa_libs::hld_impl_::hld<true, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >, &(op_ba(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >)), std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >, &(mapping(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >)), &(composition(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >))>::hld(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > >, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > > const&, tifa_libs::tree_dfs_info<tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, tifa_libs::tdi_dfn, tifa_libs::tdi_maxson, tifa_libs::tdi_dep, tifa_libs::tdi_fa> const&, std::span<std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bd_tag<13l> > > const, 18446744073709551615ul>):
✓ Branch 5 taken 2334317 times.
✓ Branch 6 taken 20 times.
tifa_libs::hld_impl_::hld<true, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, &(op_ab(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >)), std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, &(mapping(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >)), &(composition(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >))>::hld(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > > const&, tifa_libs::tree_dfs_info<tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, tifa_libs::tdi_dfn, tifa_libs::tdi_maxson, tifa_libs::tdi_dep, tifa_libs::tdi_fa> const&, std::span<std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > > const, 18446744073709551615ul>):
✓ Branch 5 taken 2334317 times.
✓ Branch 6 taken 20 times.
tifa_libs::hld_impl_::hld<true, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, &(op_ba(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >)), std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, &(mapping(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >)), &(composition(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >))>::hld(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > >, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > > const&, tifa_libs::tree_dfs_info<tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, tifa_libs::tdi_dfn, tifa_libs::tdi_maxson, tifa_libs::tdi_dep, tifa_libs::tdi_fa> const&, std::span<std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_bs_tag<998244353ul> > > const, 18446744073709551615ul>):
✓ Branch 5 taken 2334317 times.
✓ Branch 6 taken 20 times.
tifa_libs::hld_impl_::hld<true, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >, &(op_ab(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >)), std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >, &(mapping(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >)), &(composition(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >))>::hld(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > > const&, tifa_libs::tree_dfs_info<tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, tifa_libs::tdi_dfn, tifa_libs::tdi_maxson, tifa_libs::tdi_dep, tifa_libs::tdi_fa> const&, std::span<std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > > const, 18446744073709551615ul>):
✓ Branch 5 taken 2334317 times.
✓ Branch 6 taken 20 times.
tifa_libs::hld_impl_::hld<true, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >, &(op_ba(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >)), std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >, &(mapping(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >)), &(composition(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >))>::hld(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > >, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > > const&, tifa_libs::tree_dfs_info<tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, tifa_libs::tdi_dfn, tifa_libs::tdi_maxson, tifa_libs::tdi_dep, tifa_libs::tdi_fa> const&, std::span<std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md64_tag<13l> > > const, 18446744073709551615ul>):
✓ Branch 5 taken 2334317 times.
✓ Branch 6 taken 20 times.
tifa_libs::hld_impl_::hld<true, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >, &(op_ab(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >)), std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >, &(mapping(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >)), &(composition(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >))>::hld(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > > const&, tifa_libs::tree_dfs_info<tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, tifa_libs::tdi_dfn, tifa_libs::tdi_maxson, tifa_libs::tdi_dep, tifa_libs::tdi_fa> const&, std::span<std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > > const, 18446744073709551615ul>):
✓ Branch 5 taken 2334317 times.
✓ Branch 6 taken 20 times.
tifa_libs::hld_impl_::hld<true, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >, &(op_ba(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >)), std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >, &(mapping(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >)), &(composition(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >))>::hld(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > >, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > > const&, tifa_libs::tree_dfs_info<tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, tifa_libs::tdi_dfn, tifa_libs::tdi_maxson, tifa_libs::tdi_dep, tifa_libs::tdi_fa> const&, std::span<std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_md_tag<13l> > > const, 18446744073709551615ul>):
✓ Branch 5 taken 2334317 times.
✓ Branch 6 taken 20 times.
tifa_libs::hld_impl_::hld<true, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, &(op_ab(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >)), std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, &(mapping(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >)), &(composition(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >))>::hld(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > > const&, tifa_libs::tree_dfs_info<tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, tifa_libs::tdi_dfn, tifa_libs::tdi_maxson, tifa_libs::tdi_dep, tifa_libs::tdi_fa> const&, std::span<std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > const, 18446744073709551615ul>):
✓ Branch 5 taken 2334317 times.
✓ Branch 6 taken 20 times.
tifa_libs::hld_impl_::hld<true, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, &(op_ba(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >)), std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, &(mapping(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >)), &(composition(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >))>::hld(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > >, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > > const&, tifa_libs::tree_dfs_info<tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, tifa_libs::tdi_dfn, tifa_libs::tdi_maxson, tifa_libs::tdi_dep, tifa_libs::tdi_fa> const&, std::span<std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms64_tag<998244353ul> > > const, 18446744073709551615ul>):
✓ Branch 5 taken 2334317 times.
✓ Branch 6 taken 20 times.
tifa_libs::hld_impl_::hld<true, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, &(op_ab(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >)), std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, &(mapping(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >)), &(composition(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >))>::hld(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > > const&, tifa_libs::tree_dfs_info<tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, tifa_libs::tdi_dfn, tifa_libs::tdi_maxson, tifa_libs::tdi_dep, tifa_libs::tdi_fa> const&, std::span<std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > const, 18446744073709551615ul>):
✓ Branch 5 taken 2334317 times.
✓ Branch 6 taken 20 times.
tifa_libs::hld_impl_::hld<true, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, &(op_ba(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >)), std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, &(mapping(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >)), &(composition(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >&, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >))>::hld(std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > >, tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > > const&, tifa_libs::tree_dfs_info<tifa_libs::tree<tifa_libs::graph_impl_::graph<tifa_libs::alist_impl_::alist_tag<void> > >, tifa_libs::tdi_dfn, tifa_libs::tdi_maxson, tifa_libs::tdi_dep, tifa_libs::tdi_fa> const&, std::span<std::pair<tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> >, tifa_libs::mint_impl_::mint<tifa_libs::mint_ms_tag<998244353ul> > > const, 18446744073709551615ul>):
✓ Branch 5 taken 2334317 times.
✓ Branch 6 taken 20 times.
28012044 flt_ (u32, i, 0, (u32)a.size()) b[info.dfn[i]] = a[i];
26 240 build(b);
27 240 }
28 CEXP hld(tree_t CR tr, spn<T> a) NE : hld(tr, tree_info_t(tr), a) {}
29
30 343 CEXP void build(spn<T> a) NE { t.reset(a); }
31 1316911 CEXP void chain_update(u32 u, u32 v, cT_(F) f) NE {
32
2/2
✓ Branch 2 taken 915929 times.
✓ Branch 3 taken 1316911 times.
2232840 while (top[u] != top[v]) {
33
1/2
✗ Branch 4 not taken.
✓ Branch 5 taken 915929 times.
915929 if (info.dep[top[u]] < info.dep[top[v]]) swap(u, v);
34 915929 t.update(info.dfn[top[u]], info.dfn[u] + 1, f);
35 915929 u = info.fa[top[u]];
36 }
37
1/2
✗ Branch 2 not taken.
✓ Branch 3 taken 1316911 times.
1316911 if (info.dfn[u] < info.dfn[v]) swap(u, v);
38 1316911 t.update(info.dfn[v], info.dfn[u] + 1, f);
39 1316911 }
40 CEXP void subtree_update(u32 u, cT_(F) f) NE { t.update(info.dfn[u], info.dfn[u] + info.sz[u], f); }
41 18037538 CEXP void node_update(u32 u, cT_(F) f) NE { t.update(info.dfn[u], f); }
42 CEXP void chain_set(u32 u, u32 v, cT_(T) f) NE {
43 while (top[u] != top[v]) {
44 if (info.dep[top[u]] < info.dep[top[v]]) swap(u, v);
45 t.set(info.dfn[top[u]], info.dfn[u] + 1, f), u = info.fa[top[u]];
46 }
47 if (info.dfn[u] < info.dfn[v]) swap(u, v);
48 t.set(info.dfn[v], info.dfn[u] + 1, f);
49 }
50 CEXP void subtree_set(u32 u, cT_(T) f) NE { t.set(info.dfn[u], info.dfn[u] + info.sz[u], f); }
51 CEXP void node_set(u32 u, cT_(T) f) NE { t.set(info.dfn[u] + 1, f); }
52 81570738 CEXP T chain_query(u32 u, u32 v) NE {
53 81570738 T ret = t.E;
54
2/2
✓ Branch 2 taken 14863318 times.
✓ Branch 3 taken 5856714 times.
96434056 while (top[u] != top[v]) {
55
2/2
✓ Branch 4 taken 6392817 times.
✓ Branch 5 taken 8470501 times.
14863318 if (info.dep[top[u]] < info.dep[top[v]]) swap(u, v);
56 14863318 ret = op(ret, t.query(info.dfn[top[u]], info.dfn[u] + 1)), u = info.fa[top[u]];
57 }
58
2/2
✓ Branch 2 taken 1867507 times.
✓ Branch 3 taken 3989207 times.
81570738 if (info.dfn[u] < info.dfn[v]) swap(u, v);
59 81570738 return op(ret, t.query(info.dfn[v], info.dfn[u] + 1));
60 }
61 1917488 CEXP T subtree_query(u32 u) NE { return t.query(info.dfn[u], info.dfn[u] + info.sz[u]); }
62 CEXP T node_query(u32 u) NE { return t.query(info.dfn[u]); }
63 };
64 } // namespace hld_impl_
65
66 template <tree_c tree_t, class T, auto op, class F, auto mapping, auto composition>
67 using hld = hld_impl_::hld<true, tree_t, T, op, F, mapping, composition>;
68 template <tree_c tree_t, class T, auto op, auto mapping>
69 class hld_notag : public hld_impl_::hld<false, tree_t, T, op, T, mapping, mapping> {
70 using base = hld_impl_::hld<false, tree_t, T, op, T, mapping, mapping>;
71
72 public:
73 CEXP hld_notag(cT_(T) e, tree_t CR tr, base::tree_info_t CR info) NE : base(e, e, tr, info) {}
74 template <class V>
75 CEXP hld_notag(cT_(T) e, tree_t CR tr) NE : base(e, e, tr) {}
76 CEXP hld_notag(cT_(T) e, tree_t CR tr, base::tree_info_t CR info, spn<T> a) NE : base(e, e, tr, info, a) {}
77 };
78
79 } // namespace tifa_libs
80