Documentation for 1bfd46e92c

This commit is contained in:
github-actions
2023-06-16 21:23:15 +00:00
parent 14deeecd50
commit e93ea7c42d
7241 changed files with 54781 additions and 234178 deletions

View File

@@ -3,7 +3,7 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.7"/>
<meta name="generator" content="Doxygen 1.9.6"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: range_queries::heavy_light_decomposition::HLD&lt; X &gt; Class Template Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@@ -41,7 +41,7 @@ MathJax.Hub.Config({
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.7 -->
<!-- Generated by Doxygen 1.9.6 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
@@ -111,12 +111,14 @@ $(document).ready(function(){initNavTree('d2/d8a/classrange__queries_1_1heavy__l
<div class="dynheader">
Inheritance diagram for range_queries::heavy_light_decomposition::HLD&lt; X &gt;:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d0/d2c/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d__inherit__graph.svg" width="350" height="147"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d0/d2c/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d__inherit__graph.svg" width="350" height="147"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a target="top" href="../../graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for range_queries::heavy_light_decomposition::HLD&lt; X &gt;:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="../../dc/dd9/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d__coll__graph.svg" width="100%" height="524"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="../../dc/dd9/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d__coll__graph.svg" width="100%" height="524"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<center><span class="legend">[<a target="top" href="../../graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -246,11 +248,11 @@ template&lt;typename X &gt; </div>
<div class="line"><span class="lineno"> 442</span> }</div>
<div class="ttc" id="aassign_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/assign.html">std::vector::assign</a></div><div class="ttdeci">T assign(T... args)</div></div>
<div class="ttc" id="abegin_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/begin.html">std::vector::begin</a></div><div class="ttdeci">T begin(T... args)</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a1b336474d17eff1aa4be73d4068dc725"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">range_queries::heavy_light_decomposition::HLD::h_parent</a></div><div class="ttdeci">std::vector&lt; int &gt; h_parent</div><div class="ttdoc">stores the top of the heavy chain from a node</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:341</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a722cc7cf2c3e4d15583601a48b09776f"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a722cc7cf2c3e4d15583601a48b09776f">range_queries::heavy_light_decomposition::HLD::label</a></div><div class="ttdeci">int label</div><div class="ttdoc">utility member to assign labels in dfs_labels()</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:338</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a84424f180f12b514eaab57a6aa20b104"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">range_queries::heavy_light_decomposition::HLD::h_heavychlid</a></div><div class="ttdeci">std::vector&lt; int &gt; h_heavychlid</div><div class="ttdoc">stores the heavy child of a node</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:340</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_aa86a91ae0cd7898990a8170a2f2c9cda"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">range_queries::heavy_light_decomposition::HLD::h_label</a></div><div class="ttdeci">std::vector&lt; int &gt; h_label</div><div class="ttdoc">stores the label of a node</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:339</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_ae4630fa70a80a1dc65a875488a67178a"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">range_queries::heavy_light_decomposition::Tree::t_nodes</a></div><div class="ttdeci">const int t_nodes</div><div class="ttdoc">number of nodes</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:84</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a1b336474d17eff1aa4be73d4068dc725"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">range_queries::heavy_light_decomposition::HLD::h_parent</a></div><div class="ttdeci">std::vector&lt; int &gt; h_parent</div><div class="ttdoc">stores the top of the heavy chain from a node</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:341</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a722cc7cf2c3e4d15583601a48b09776f"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a722cc7cf2c3e4d15583601a48b09776f">range_queries::heavy_light_decomposition::HLD::label</a></div><div class="ttdeci">int label</div><div class="ttdoc">utility member to assign labels in dfs_labels()</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:338</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a84424f180f12b514eaab57a6aa20b104"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">range_queries::heavy_light_decomposition::HLD::h_heavychlid</a></div><div class="ttdeci">std::vector&lt; int &gt; h_heavychlid</div><div class="ttdoc">stores the heavy child of a node</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:340</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_aa86a91ae0cd7898990a8170a2f2c9cda"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">range_queries::heavy_light_decomposition::HLD::h_label</a></div><div class="ttdeci">std::vector&lt; int &gt; h_label</div><div class="ttdoc">stores the label of a node</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:339</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_ae4630fa70a80a1dc65a875488a67178a"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">range_queries::heavy_light_decomposition::Tree::t_nodes</a></div><div class="ttdeci">const int t_nodes</div><div class="ttdoc">number of nodes</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:84</div></div>
<div class="ttc" id="aend_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/end.html">std::vector::end</a></div><div class="ttdeci">T end(T... args)</div></div>
<div class="ttc" id="aiota_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/iota.html">std::iota</a></div><div class="ttdeci">T iota(T... args)</div></div>
<div class="ttc" id="aresize_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/resize.html">std::vector::resize</a></div><div class="ttdeci">T resize(T... args)</div></div>
@@ -322,17 +324,18 @@ template&lt;typename X &gt; </div>
<div class="line"><span class="lineno"> 425</span> }</div>
<div class="line"><span class="lineno"> 426</span> <span class="keywordflow">return</span> ret;</div>
<div class="line"><span class="lineno"> 427</span> }</div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_s_g_html_a1fda852e6e522707fd97f61cdb0a2591"><div class="ttname"><a href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a1fda852e6e522707fd97f61cdb0a2591">range_queries::heavy_light_decomposition::SG::query</a></div><div class="ttdeci">X query(int l, int r)</div><div class="ttdoc">Make a range query from node label l to node label r.</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:305</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_s_g_html_a41c733f5f5e262b308f7cb95c88c1e74"><div class="ttname"><a href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74">range_queries::heavy_light_decomposition::SG::combine</a></div><div class="ttdeci">X combine(X lhs, X rhs)</div><div class="ttdoc">Function that specifies the type of operation involved when segments are combined.</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:274</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_s_g_html_aa7f93971a9f891e0bbb7023081f379d5"><div class="ttname"><a href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#aa7f93971a9f891e0bbb7023081f379d5">range_queries::heavy_light_decomposition::SG::sret_init</a></div><div class="ttdeci">X sret_init</div><div class="ttdoc">inital query return value</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:264</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_a0efd0b9c564092f443ca97030d866ef1"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">range_queries::heavy_light_decomposition::Tree::t_depth</a></div><div class="ttdeci">std::vector&lt; int &gt; t_depth</div><div class="ttdoc">a vector to store the depth of a node,</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:88</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_a350157a5fb79f76fceae33fc84171203"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a350157a5fb79f76fceae33fc84171203">range_queries::heavy_light_decomposition::Tree::t_par</a></div><div class="ttdeci">std::vector&lt; std::vector&lt; int &gt; &gt; t_par</div><div class="ttdoc">a matrix to store every node's 2^kth parent</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:87</div></div>
<div class="ttc" id="acomposite__simpson__rule_8cpp_html_a6d8df83a6f26ce24a75d3b358b7f5b8a"><div class="ttname"><a href="../../d4/d18/composite__simpson__rule_8cpp.html#a6d8df83a6f26ce24a75d3b358b7f5b8a">numerical_methods::simpson_method::l</a></div><div class="ttdeci">double l(double x)</div><div class="ttdoc">Another test function.</div><div class="ttdef"><b>Definition</b> composite_simpson_rule.cpp:119</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_s_g_html_a1fda852e6e522707fd97f61cdb0a2591"><div class="ttname"><a href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a1fda852e6e522707fd97f61cdb0a2591">range_queries::heavy_light_decomposition::SG::query</a></div><div class="ttdeci">X query(int l, int r)</div><div class="ttdoc">Make a range query from node label l to node label r.</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:305</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_s_g_html_a41c733f5f5e262b308f7cb95c88c1e74"><div class="ttname"><a href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74">range_queries::heavy_light_decomposition::SG::combine</a></div><div class="ttdeci">X combine(X lhs, X rhs)</div><div class="ttdoc">Function that specifies the type of operation involved when segments are combined.</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:274</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_s_g_html_aa7f93971a9f891e0bbb7023081f379d5"><div class="ttname"><a href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#aa7f93971a9f891e0bbb7023081f379d5">range_queries::heavy_light_decomposition::SG::sret_init</a></div><div class="ttdeci">X sret_init</div><div class="ttdoc">inital query return value</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:264</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_a0efd0b9c564092f443ca97030d866ef1"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">range_queries::heavy_light_decomposition::Tree::t_depth</a></div><div class="ttdeci">std::vector&lt; int &gt; t_depth</div><div class="ttdoc">a vector to store the depth of a node,</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:88</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_a350157a5fb79f76fceae33fc84171203"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a350157a5fb79f76fceae33fc84171203">range_queries::heavy_light_decomposition::Tree::t_par</a></div><div class="ttdeci">std::vector&lt; std::vector&lt; int &gt; &gt; t_par</div><div class="ttdoc">a matrix to store every node's 2^kth parent</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:87</div></div>
<div class="ttc" id="acomposite__simpson__rule_8cpp_html_a6d8df83a6f26ce24a75d3b358b7f5b8a"><div class="ttname"><a href="../../d4/d18/composite__simpson__rule_8cpp.html#a6d8df83a6f26ce24a75d3b358b7f5b8a">numerical_methods::simpson_method::l</a></div><div class="ttdeci">double l(double x)</div><div class="ttdoc">Another test function.</div><div class="ttdef"><b>Definition:</b> composite_simpson_rule.cpp:119</div></div>
<div class="ttc" id="aswap_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a></div><div class="ttdeci">T swap(T... args)</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_a7d5b40c076347a6aabfb37a0590f2f24_cgraph.svg" width="350" height="118"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_a7d5b40c076347a6aabfb37a0590f2f24_cgraph.svg" width="350" height="118"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
@@ -384,7 +387,7 @@ template&lt;typename X &gt; </div>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 350</span> {</div>
<div class="line"><span class="lineno"> 351</span> <span class="keywordtype">int</span> hc_size = -1, hc_id = -1;</div>
<div class="line"><span class="lineno"> 352</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">int</span> &amp;v : <a class="code hl_function" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a835fb2bbb27307b8cacad9b287968bc1">Tree</a>&lt;X&gt;::<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ab1aeaefa1bd97b867c652ba916fbdb43">t_adj</a>[u]) {</div>
<div class="line"><span class="lineno"> 352</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">int</span> &amp;v : <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ab1aeaefa1bd97b867c652ba916fbdb43">Tree&lt;X&gt;::t_adj</a>[u]) {</div>
<div class="line"><span class="lineno"> 353</span> <span class="keywordflow">if</span> (v ^ p) {</div>
<div class="line"><span class="lineno"> 354</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#af64848d6630c39d0f09ce2359cc7c4f8">dfs_hc</a>(v, u);</div>
<div class="line"><span class="lineno"> 355</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ada1494fccbc7f1f07b2f9be9f7e07ad5">Tree&lt;X&gt;::t_size</a>[v] &gt; hc_size) {</div>
@@ -395,14 +398,14 @@ template&lt;typename X &gt; </div>
<div class="line"><span class="lineno"> 360</span> }</div>
<div class="line"><span class="lineno"> 361</span> <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u] = hc_id;</div>
<div class="line"><span class="lineno"> 362</span> }</div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_af64848d6630c39d0f09ce2359cc7c4f8"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#af64848d6630c39d0f09ce2359cc7c4f8">range_queries::heavy_light_decomposition::HLD::dfs_hc</a></div><div class="ttdeci">void dfs_hc(int u, int p=-1)</div><div class="ttdoc">Utility function to assign heavy child to each node (-1 for a leaf node)</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:350</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_a835fb2bbb27307b8cacad9b287968bc1"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a835fb2bbb27307b8cacad9b287968bc1">range_queries::heavy_light_decomposition::Tree::Tree</a></div><div class="ttdeci">Tree(int nodes)</div><div class="ttdoc">Class parameterized constructor, resizes the and initializes the data members.</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:140</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_ab1aeaefa1bd97b867c652ba916fbdb43"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ab1aeaefa1bd97b867c652ba916fbdb43">range_queries::heavy_light_decomposition::Tree::t_adj</a></div><div class="ttdeci">std::vector&lt; std::list&lt; int &gt; &gt; t_adj</div><div class="ttdoc">an adjacency list to stores the tree edges</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:83</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_ada1494fccbc7f1f07b2f9be9f7e07ad5"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ada1494fccbc7f1f07b2f9be9f7e07ad5">range_queries::heavy_light_decomposition::Tree::t_size</a></div><div class="ttdeci">std::vector&lt; int &gt; t_size</div><div class="ttdoc">a vector to store the subtree size rooted at node</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:89</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_af64848d6630c39d0f09ce2359cc7c4f8"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#af64848d6630c39d0f09ce2359cc7c4f8">range_queries::heavy_light_decomposition::HLD::dfs_hc</a></div><div class="ttdeci">void dfs_hc(int u, int p=-1)</div><div class="ttdoc">Utility function to assign heavy child to each node (-1 for a leaf node)</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:350</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_ab1aeaefa1bd97b867c652ba916fbdb43"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ab1aeaefa1bd97b867c652ba916fbdb43">range_queries::heavy_light_decomposition::Tree::t_adj</a></div><div class="ttdeci">std::vector&lt; std::list&lt; int &gt; &gt; t_adj</div><div class="ttdoc">an adjacency list to stores the tree edges</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:83</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_ada1494fccbc7f1f07b2f9be9f7e07ad5"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ada1494fccbc7f1f07b2f9be9f7e07ad5">range_queries::heavy_light_decomposition::Tree::t_size</a></div><div class="ttdeci">std::vector&lt; int &gt; t_size</div><div class="ttdoc">a vector to store the subtree size rooted at node</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:89</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_af64848d6630c39d0f09ce2359cc7c4f8_cgraph.svg" width="156" height="91"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_af64848d6630c39d0f09ce2359cc7c4f8_cgraph.svg" width="156" height="91"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
@@ -457,17 +460,18 @@ template&lt;typename X &gt; </div>
<div class="line"><span class="lineno"> 392</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u] != -1) {</div>
<div class="line"><span class="lineno"> 393</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8">dfs_labels</a>(<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u], u);</div>
<div class="line"><span class="lineno"> 394</span> }</div>
<div class="line"><span class="lineno"> 395</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">int</span> &amp;v : <a class="code hl_function" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a835fb2bbb27307b8cacad9b287968bc1">Tree</a>&lt;X&gt;::<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ab1aeaefa1bd97b867c652ba916fbdb43">t_adj</a>[u]) {</div>
<div class="line"><span class="lineno"> 395</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">int</span> &amp;v : <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ab1aeaefa1bd97b867c652ba916fbdb43">Tree&lt;X&gt;::t_adj</a>[u]) {</div>
<div class="line"><span class="lineno"> 396</span> <span class="keywordflow">if</span> (v ^ p and v ^ <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u]) {</div>
<div class="line"><span class="lineno"> 397</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8">dfs_labels</a>(v, u);</div>
<div class="line"><span class="lineno"> 398</span> }</div>
<div class="line"><span class="lineno"> 399</span> }</div>
<div class="line"><span class="lineno"> 400</span> }</div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a0579062b384e54b611b80c6337c7f2c8"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8">range_queries::heavy_light_decomposition::HLD::dfs_labels</a></div><div class="ttdeci">void dfs_labels(int u, int p=-1)</div><div class="ttdoc">Utility function to lable the nodes so that heavy chains have a contigous lable.</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:390</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a0579062b384e54b611b80c6337c7f2c8"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8">range_queries::heavy_light_decomposition::HLD::dfs_labels</a></div><div class="ttdeci">void dfs_labels(int u, int p=-1)</div><div class="ttdoc">Utility function to lable the nodes so that heavy chains have a contigous lable.</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:390</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_a0579062b384e54b611b80c6337c7f2c8_cgraph.svg" width="156" height="91"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_a0579062b384e54b611b80c6337c7f2c8_cgraph.svg" width="156" height="91"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
@@ -522,17 +526,18 @@ template&lt;typename X &gt; </div>
<div class="line"><span class="lineno"> 373</span> <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u]] = <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[u];</div>
<div class="line"><span class="lineno"> 374</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a">dfs_par</a>(<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u], u);</div>
<div class="line"><span class="lineno"> 375</span> }</div>
<div class="line"><span class="lineno"> 376</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">int</span> &amp;v : <a class="code hl_function" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a835fb2bbb27307b8cacad9b287968bc1">Tree</a>&lt;X&gt;::<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ab1aeaefa1bd97b867c652ba916fbdb43">t_adj</a>[u]) {</div>
<div class="line"><span class="lineno"> 376</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">int</span> &amp;v : <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ab1aeaefa1bd97b867c652ba916fbdb43">Tree&lt;X&gt;::t_adj</a>[u]) {</div>
<div class="line"><span class="lineno"> 377</span> <span class="keywordflow">if</span> (v ^ p and v ^ <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u]) {</div>
<div class="line"><span class="lineno"> 378</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a">dfs_par</a>(v, u);</div>
<div class="line"><span class="lineno"> 379</span> }</div>
<div class="line"><span class="lineno"> 380</span> }</div>
<div class="line"><span class="lineno"> 381</span> }</div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a2dfbda148aad0bfaba2ebfda9ebc915a"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a">range_queries::heavy_light_decomposition::HLD::dfs_par</a></div><div class="ttdeci">void dfs_par(int u, int p=-1)</div><div class="ttdoc">Utility function to assign highest parent that can be reached though heavy chains.</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:371</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a2dfbda148aad0bfaba2ebfda9ebc915a"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a">range_queries::heavy_light_decomposition::HLD::dfs_par</a></div><div class="ttdeci">void dfs_par(int u, int p=-1)</div><div class="ttdoc">Utility function to assign highest parent that can be reached though heavy chains.</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:371</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_a2dfbda148aad0bfaba2ebfda9ebc915a_cgraph.svg" width="156" height="91"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_a2dfbda148aad0bfaba2ebfda9ebc915a_cgraph.svg" width="156" height="91"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
@@ -582,14 +587,15 @@ template&lt;typename X &gt; </div>
<div class="line"><span class="lineno"> 465</span> <a class="code hl_function" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74">SG&lt;X&gt;::combine</a>(<a class="code hl_variable" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#afbf8a9cb9449d5ca844f4e141a801e6a">SG&lt;X&gt;::s_tree</a>[i &lt;&lt; 1], <a class="code hl_variable" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#afbf8a9cb9449d5ca844f4e141a801e6a">SG&lt;X&gt;::s_tree</a>[i &lt;&lt; 1 | 1]);</div>
<div class="line"><span class="lineno"> 466</span> }</div>
<div class="line"><span class="lineno"> 467</span> }</div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_s_g_html_afbf8a9cb9449d5ca844f4e141a801e6a"><div class="ttname"><a href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#afbf8a9cb9449d5ca844f4e141a801e6a">range_queries::heavy_light_decomposition::SG::s_tree</a></div><div class="ttdeci">std::vector&lt; X &gt; s_tree</div><div class="ttdoc">Everything here is private, and can only be accessed through the methods, in the derived class (HLD)</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:262</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_a135b7952593c9b1aae38fcaf1cc1abf7"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">range_queries::heavy_light_decomposition::Tree::t_val</a></div><div class="ttdeci">std::vector&lt; X &gt; t_val</div><div class="ttdoc">values of nodes</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:92</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_aa6c37e840355b9fb2105181c578694e8"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa6c37e840355b9fb2105181c578694e8">range_queries::heavy_light_decomposition::Tree::t_root</a></div><div class="ttdeci">int t_root</div><div class="ttdoc">the root of the tree</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:91</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_ad22d760a5a33545a70e7ea5e1786c8dc"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ad22d760a5a33545a70e7ea5e1786c8dc">range_queries::heavy_light_decomposition::Tree::init</a></div><div class="ttdeci">void init()</div><div class="ttdoc">This function must be called after the tree adjacency list and node values are populated The function...</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:186</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_s_g_html_afbf8a9cb9449d5ca844f4e141a801e6a"><div class="ttname"><a href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#afbf8a9cb9449d5ca844f4e141a801e6a">range_queries::heavy_light_decomposition::SG::s_tree</a></div><div class="ttdeci">std::vector&lt; X &gt; s_tree</div><div class="ttdoc">Everything here is private, and can only be accessed through the methods, in the derived class (HLD)</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:262</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_a135b7952593c9b1aae38fcaf1cc1abf7"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">range_queries::heavy_light_decomposition::Tree::t_val</a></div><div class="ttdeci">std::vector&lt; X &gt; t_val</div><div class="ttdoc">values of nodes</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:92</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_aa6c37e840355b9fb2105181c578694e8"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa6c37e840355b9fb2105181c578694e8">range_queries::heavy_light_decomposition::Tree::t_root</a></div><div class="ttdeci">int t_root</div><div class="ttdoc">the root of the tree</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:91</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_ad22d760a5a33545a70e7ea5e1786c8dc"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ad22d760a5a33545a70e7ea5e1786c8dc">range_queries::heavy_light_decomposition::Tree::init</a></div><div class="ttdeci">void init()</div><div class="ttdoc">This function must be called after the tree adjacency list and node values are populated The function...</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:186</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_ae9e979edd69678b85665c01e2ee97828_cgraph.svg" width="543" height="511"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_ae9e979edd69678b85665c01e2ee97828_cgraph.svg" width="543" height="511"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
@@ -647,12 +653,13 @@ template&lt;typename X &gt; </div>
<div class="line"><span class="lineno"> 494</span> ret += <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a7d5b40c076347a6aabfb37a0590f2f24">chain_query</a>(b, lc);</div>
<div class="line"><span class="lineno"> 495</span> <span class="keywordflow">return</span> ret - <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">Tree&lt;X&gt;::t_val</a>[lc];</div>
<div class="line"><span class="lineno"> 496</span> }</div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a7d5b40c076347a6aabfb37a0590f2f24"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a7d5b40c076347a6aabfb37a0590f2f24">range_queries::heavy_light_decomposition::HLD::chain_query</a></div><div class="ttdeci">X chain_query(int a, int b)</div><div class="ttdoc">Utility function to break down a path query into two chain queries.</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:409</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_ae2b407e64aaf9878fbee7ee6efe9c7d4"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae2b407e64aaf9878fbee7ee6efe9c7d4">range_queries::heavy_light_decomposition::Tree::lca</a></div><div class="ttdeci">int lca(int a, int b)</div><div class="ttdoc">The function returns the least common ancestor of two nodes.</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:229</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a7d5b40c076347a6aabfb37a0590f2f24"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a7d5b40c076347a6aabfb37a0590f2f24">range_queries::heavy_light_decomposition::HLD::chain_query</a></div><div class="ttdeci">X chain_query(int a, int b)</div><div class="ttdoc">Utility function to break down a path query into two chain queries.</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:409</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_ae2b407e64aaf9878fbee7ee6efe9c7d4"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae2b407e64aaf9878fbee7ee6efe9c7d4">range_queries::heavy_light_decomposition::Tree::lca</a></div><div class="ttdeci">int lca(int a, int b)</div><div class="ttdoc">The function returns the least common ancestor of two nodes.</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:229</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_a4dfbf5d9df825eeb63b294c6849bdcab_cgraph.svg" width="543" height="204"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_a4dfbf5d9df825eeb63b294c6849bdcab_cgraph.svg" width="543" height="204"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
@@ -707,12 +714,13 @@ template&lt;typename X &gt; </div>
<div class="line"><span class="lineno"> 477</span> <a class="code hl_function" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c">SG&lt;X&gt;::update</a>(<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[<a class="code hl_class" href="../../d5/da1/structnode.html">node</a>], diff);</div>
<div class="line"><span class="lineno"> 478</span> <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">Tree&lt;X&gt;::t_val</a>[<a class="code hl_class" href="../../d5/da1/structnode.html">node</a>] = val;</div>
<div class="line"><span class="lineno"> 479</span> }</div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_s_g_html_a3c75bf5770790f8eba8cc92227b5400c"><div class="ttname"><a href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c">range_queries::heavy_light_decomposition::SG::update</a></div><div class="ttdeci">void update(int p, X v)</div><div class="ttdoc">Update the value at a node.</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:293</div></div>
<div class="ttc" id="astructnode_html"><div class="ttname"><a href="../../d5/da1/structnode.html">node</a></div><div class="ttdef"><b>Definition</b> binary_search_tree.cpp:11</div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_s_g_html_a3c75bf5770790f8eba8cc92227b5400c"><div class="ttname"><a href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c">range_queries::heavy_light_decomposition::SG::update</a></div><div class="ttdeci">void update(int p, X v)</div><div class="ttdoc">Update the value at a node.</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:293</div></div>
<div class="ttc" id="astructnode_html"><div class="ttname"><a href="../../d5/da1/structnode.html">node</a></div><div class="ttdef"><b>Definition:</b> binary_search_tree.cpp:11</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_a9f1cb54ed09fde931bf3220d75ee4c57_cgraph.svg" width="350" height="67"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_a9f1cb54ed09fde931bf3220d75ee4c57_cgraph.svg" width="350" height="67"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
@@ -726,7 +734,7 @@ Here is the call graph for this function:</div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dd/d69/namespacerange__queries.html">range_queries</a></li><li class="navelem"><b>heavy_light_decomposition</b></li><li class="navelem"><a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html">HLD</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7 </li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.6 </li>
</ul>
</div>
</body>

View File

@@ -1,4 +1,3 @@
<map id="range_queries::heavy_light_decomposition::HLD::dfs_labels" name="range_queries::heavy_light_decomposition::HLD::dfs_labels">
<area shape="rect" id="Node000001" title="Utility function to lable the nodes so that heavy chains have a contigous lable." alt="" coords="5,29,151,85"/>
<area shape="poly" id="edge1_Node000001_Node000001" title=" " alt="" coords="49,29,49,19,54,10,64,5,78,3,94,6,104,13,101,17,92,10,78,8,66,10,58,14,54,21,54,29"/>
<area shape="rect" id="node1" title="Utility function to lable the nodes so that heavy chains have a contigous lable." alt="" coords="5,29,151,85"/>
</map>

View File

@@ -1 +1 @@
0f5965070c280318b4f25c28d84b0772
f76055aac90e6631b12948a28bddf1fe

View File

@@ -6,22 +6,12 @@
<!-- Title: range_queries::heavy_light_decomposition::HLD::dfs_labels Pages: 1 -->
<svg width="117pt" height="68pt"
viewBox="0.00 0.00 117.00 67.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
<style type="text/css"><![CDATA[
.node, .edge {opacity: 0.7;}
.node.selected, .edge.selected {opacity: 1;}
.edge:hover path { stroke: red; }
.edge:hover polygon { stroke: red; fill: red; }
]]></style>
<script type="application/ecmascript" xlink:href="../../svg.min.js"/>
<svg id="graph" class="graph">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 63.75)">
<title>range_queries::heavy_light_decomposition::HLD::dfs_labels</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<g id="node1" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Utility function to lable the nodes so that heavy chains have a contigous lable.">
<g id="a_node1"><a xlink:title="Utility function to lable the nodes so that heavy chains have a contigous lable.">
<polygon fill="#999999" stroke="#666666" points="109,-41.75 0,-41.75 0,0 109,0 109,-41.75"/>
<text text-anchor="start" x="8" y="-28.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="8" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -30,28 +20,10 @@
</g>
</g>
<!-- Node1&#45;&gt;Node1 -->
<g id="edge1_Node000001_Node000001" class="edge">
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node1</title>
<g id="a_edge1_Node000001_Node000001"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M34.38,-42.07C32.47,-51.55 39.17,-59.75 54.5,-59.75 63.6,-59.75 69.66,-56.86 72.68,-52.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="76.24,-53.54 74.62,-43.07 69.36,-52.27 76.24,-53.54"/>
</a>
</g>
</g>
</g>
</svg>
</svg>
<style type='text/css'>
<![CDATA[
[data-mouse-over-selected='false'] { opacity: 0.7; }
[data-mouse-over-selected='true'] { opacity: 1.0; }
]]>
</style>
<script type="application/ecmascript"><![CDATA[
document.addEventListener('DOMContentLoaded', (event) => {
highlightEdges();
highlightAdjacentNodes();
});
]]></script>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -1,32 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 8.0.5 (20230430.1635)
-->
<!-- Title: range_queries::heavy_light_decomposition::HLD::dfs_labels Pages: 1 -->
<svg width="117pt" height="68pt"
viewBox="0.00 0.00 117.00 67.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 63.75)">
<title>range_queries::heavy_light_decomposition::HLD::dfs_labels</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Utility function to lable the nodes so that heavy chains have a contigous lable.">
<polygon fill="#999999" stroke="#666666" points="109,-41.75 0,-41.75 0,0 109,0 109,-41.75"/>
<text text-anchor="start" x="8" y="-28.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="8" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="54.5" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_labels</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node1 -->
<g id="edge1_Node000001_Node000001" class="edge">
<title>Node1&#45;&gt;Node1</title>
<g id="a_edge1_Node000001_Node000001"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M34.38,-42.07C32.47,-51.55 39.17,-59.75 54.5,-59.75 63.6,-59.75 69.66,-56.86 72.68,-52.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="76.24,-53.54 74.62,-43.07 69.36,-52.27 76.24,-53.54"/>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -1,4 +1,3 @@
<map id="range_queries::heavy_light_decomposition::HLD::dfs_par" name="range_queries::heavy_light_decomposition::HLD::dfs_par">
<area shape="rect" id="Node000001" title="Utility function to assign highest parent that can be reached though heavy chains." alt="" coords="5,29,151,85"/>
<area shape="poly" id="edge1_Node000001_Node000001" title=" " alt="" coords="49,29,49,19,54,10,64,5,78,3,94,6,104,13,101,17,92,10,78,8,66,10,58,14,54,21,54,29"/>
<area shape="rect" id="node1" title="Utility function to assign highest parent that can be reached though heavy chains." alt="" coords="5,29,151,85"/>
</map>

View File

@@ -1 +1 @@
85f487af64c5d751d0addeac240dcae9
746f742a11a9cb46b2eb4391f5cbe04b

View File

@@ -6,22 +6,12 @@
<!-- Title: range_queries::heavy_light_decomposition::HLD::dfs_par Pages: 1 -->
<svg width="117pt" height="68pt"
viewBox="0.00 0.00 117.00 67.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
<style type="text/css"><![CDATA[
.node, .edge {opacity: 0.7;}
.node.selected, .edge.selected {opacity: 1;}
.edge:hover path { stroke: red; }
.edge:hover polygon { stroke: red; fill: red; }
]]></style>
<script type="application/ecmascript" xlink:href="../../svg.min.js"/>
<svg id="graph" class="graph">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 63.75)">
<title>range_queries::heavy_light_decomposition::HLD::dfs_par</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<g id="node1" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Utility function to assign highest parent that can be reached though heavy chains.">
<g id="a_node1"><a xlink:title="Utility function to assign highest parent that can be reached though heavy chains.">
<polygon fill="#999999" stroke="#666666" points="109,-41.75 0,-41.75 0,0 109,0 109,-41.75"/>
<text text-anchor="start" x="8" y="-28.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="8" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -30,28 +20,10 @@
</g>
</g>
<!-- Node1&#45;&gt;Node1 -->
<g id="edge1_Node000001_Node000001" class="edge">
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node1</title>
<g id="a_edge1_Node000001_Node000001"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M34.38,-42.07C32.47,-51.55 39.17,-59.75 54.5,-59.75 63.6,-59.75 69.66,-56.86 72.68,-52.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="76.24,-53.54 74.62,-43.07 69.36,-52.27 76.24,-53.54"/>
</a>
</g>
</g>
</g>
</svg>
</svg>
<style type='text/css'>
<![CDATA[
[data-mouse-over-selected='false'] { opacity: 0.7; }
[data-mouse-over-selected='true'] { opacity: 1.0; }
]]>
</style>
<script type="application/ecmascript"><![CDATA[
document.addEventListener('DOMContentLoaded', (event) => {
highlightEdges();
highlightAdjacentNodes();
});
]]></script>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -1,32 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 8.0.5 (20230430.1635)
-->
<!-- Title: range_queries::heavy_light_decomposition::HLD::dfs_par Pages: 1 -->
<svg width="117pt" height="68pt"
viewBox="0.00 0.00 117.00 67.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 63.75)">
<title>range_queries::heavy_light_decomposition::HLD::dfs_par</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Utility function to assign highest parent that can be reached though heavy chains.">
<polygon fill="#999999" stroke="#666666" points="109,-41.75 0,-41.75 0,0 109,0 109,-41.75"/>
<text text-anchor="start" x="8" y="-28.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="8" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="54.5" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_par</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node1 -->
<g id="edge1_Node000001_Node000001" class="edge">
<title>Node1&#45;&gt;Node1</title>
<g id="a_edge1_Node000001_Node000001"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M34.38,-42.07C32.47,-51.55 39.17,-59.75 54.5,-59.75 63.6,-59.75 69.66,-56.86 72.68,-52.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="76.24,-53.54 74.62,-43.07 69.36,-52.27 76.24,-53.54"/>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -1,13 +1,8 @@
<map id="range_queries::heavy_light_decomposition::HLD::query" name="range_queries::heavy_light_decomposition::HLD::query">
<area shape="rect" id="Node000001" title="This function returns the sum of node values in the simple path from from node_1 to node_2." alt="" coords="5,103,151,158"/>
<area shape="rect" id="Node000002" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a7d5b40c076347a6aabfb37a0590f2f24" title="Utility function to break down a path query into two chain queries." alt="" coords="199,63,344,118"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="150,113,183,106,184,111,151,118"/>
<area shape="rect" id="Node000005" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae2b407e64aaf9878fbee7ee6efe9c7d4" title="The function returns the least common ancestor of two nodes." alt="" coords="199,143,344,198"/>
<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="151,143,184,150,183,155,150,148"/>
<area shape="rect" id="Node000003" href="$d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74" title="Function that specifies the type of operation involved when segments are combined." alt="" coords="392,5,537,61"/>
<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="343,66,377,56,378,62,345,72"/>
<area shape="rect" id="Node000004" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/swap.html#" title=" " alt="" coords="426,86,504,111"/>
<area shape="poly" id="edge3_Node000002_Node000004" title=" " alt="" coords="344,91,411,94,411,99,344,96"/>
<area shape="rect" id="Node000006" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ac7761255f2ba06b398b9aae5e4dce5f3" title="The function lifts a node, k units up the tree. The lifting is done in place, and the result is store..." alt="" coords="392,143,537,198"/>
<area shape="poly" id="edge5_Node000005_Node000006" title=" " alt="" coords="344,168,377,168,377,173,344,173"/>
<area shape="rect" id="node1" title="This function returns the sum of node values in the simple path from from node_1 to node_2." alt="" coords="5,103,151,158"/>
<area shape="rect" id="node2" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a7d5b40c076347a6aabfb37a0590f2f24" title="Utility function to break down a path query into two chain queries." alt="" coords="199,63,344,118"/>
<area shape="rect" id="node5" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae2b407e64aaf9878fbee7ee6efe9c7d4" title="The function returns the least common ancestor of two nodes." alt="" coords="199,143,344,198"/>
<area shape="rect" id="node3" href="$d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74" title="Function that specifies the type of operation involved when segments are combined." alt="" coords="392,5,537,61"/>
<area shape="rect" id="node4" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/swap.html#" title=" " alt="" coords="426,86,504,111"/>
<area shape="rect" id="node6" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ac7761255f2ba06b398b9aae5e4dce5f3" title="The function lifts a node, k units up the tree. The lifting is done in place, and the result is store..." alt="" coords="392,143,537,198"/>
</map>

View File

@@ -1 +1 @@
e12241efdff252bbfea94d43ba2dcad5
88946d51210c17344b00e0c0fa9b7e3d

View File

@@ -6,22 +6,12 @@
<!-- Title: range_queries::heavy_light_decomposition::HLD::query Pages: 1 -->
<svg width="407pt" height="153pt"
viewBox="0.00 0.00 407.00 152.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
<style type="text/css"><![CDATA[
.node, .edge {opacity: 0.7;}
.node.selected, .edge.selected {opacity: 1;}
.edge:hover path { stroke: red; }
.edge:hover polygon { stroke: red; fill: red; }
]]></style>
<script type="application/ecmascript" xlink:href="../../svg.min.js"/>
<svg id="graph" class="graph">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 148.75)">
<title>range_queries::heavy_light_decomposition::HLD::query</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<g id="node1" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="This function returns the sum of node values in the simple path from from node_1 to node_2.">
<g id="a_node1"><a xlink:title="This function returns the sum of node values in the simple path from from node_1 to node_2.">
<polygon fill="#999999" stroke="#666666" points="109,-71.75 0,-71.75 0,-30 109,-30 109,-71.75"/>
<text text-anchor="start" x="8" y="-58.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="8" y="-47" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -30,9 +20,9 @@
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<g id="node2" class="node">
<title>Node2</title>
<g id="a_Node000002"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a7d5b40c076347a6aabfb37a0590f2f24" target="_top" xlink:title="Utility function to break down a path query into two chain queries.">
<g id="a_node2"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a7d5b40c076347a6aabfb37a0590f2f24" target="_top" xlink:title="Utility function to break down a path query into two chain queries.">
<polygon fill="white" stroke="#666666" points="254,-101.75 145,-101.75 145,-60 254,-60 254,-101.75"/>
<text text-anchor="start" x="153" y="-88.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="153" y="-77" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -41,18 +31,15 @@
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1_Node000001_Node000002" class="edge">
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M109.15,-62.13C117.2,-63.82 125.57,-65.57 133.81,-67.3"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="133.04,-70.93 143.54,-69.56 134.48,-64.08 133.04,-70.93"/>
</a>
</g>
</g>
<!-- Node5 -->
<g id="Node000005" class="node">
<g id="node5" class="node">
<title>Node5</title>
<g id="a_Node000005"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae2b407e64aaf9878fbee7ee6efe9c7d4" target="_top" xlink:title="The function returns the least common ancestor of two nodes.">
<g id="a_node5"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae2b407e64aaf9878fbee7ee6efe9c7d4" target="_top" xlink:title="The function returns the least common ancestor of two nodes.">
<polygon fill="white" stroke="#666666" points="254,-41.75 145,-41.75 145,0 254,0 254,-41.75"/>
<text text-anchor="start" x="153" y="-28.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="153" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -61,18 +48,15 @@
</g>
</g>
<!-- Node1&#45;&gt;Node5 -->
<g id="edge4_Node000001_Node000005" class="edge">
<g id="edge4" class="edge">
<title>Node1&#45;&gt;Node5</title>
<g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M109.15,-39.62C117.2,-37.93 125.57,-36.18 133.81,-34.45"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="134.48,-37.67 143.54,-32.19 133.04,-30.82 134.48,-37.67"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="Node000003" class="node">
<g id="node3" class="node">
<title>Node3</title>
<g id="a_Node000003"><a xlink:href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74" target="_top" xlink:title="Function that specifies the type of operation involved when segments are combined.">
<g id="a_node3"><a xlink:href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74" target="_top" xlink:title="Function that specifies the type of operation involved when segments are combined.">
<polygon fill="white" stroke="#666666" points="399,-144.75 290,-144.75 290,-103 399,-103 399,-144.75"/>
<text text-anchor="start" x="298" y="-131.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="298" y="-120" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -81,36 +65,30 @@
</g>
</g>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge2_Node000002_Node000003" class="edge">
<g id="edge2" class="edge">
<title>Node2&#45;&gt;Node3</title>
<g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M254.15,-97.01C262.29,-99.46 270.76,-102 279.09,-104.51"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="277.96,-108.12 288.54,-107.65 279.98,-101.42 277.96,-108.12"/>
</a>
</g>
</g>
<!-- Node4 -->
<g id="Node000004" class="node">
<g id="node4" class="node">
<title>Node4</title>
<g id="a_Node000004"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap.html#" xlink:title=" ">
<g id="a_node4"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="373.88,-84.5 315.12,-84.5 315.12,-65.25 373.88,-65.25 373.88,-84.5"/>
<text text-anchor="middle" x="344.5" y="-71" font-family="Helvetica,sans-Serif" font-size="10.00">std::swap</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node4 -->
<g id="edge3_Node000002_Node000004" class="edge">
<g id="edge3" class="edge">
<title>Node2&#45;&gt;Node4</title>
<g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M254.15,-78.62C270.74,-77.93 288.68,-77.17 304.11,-76.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="304,-79.99 313.85,-76.08 303.71,-73 304,-79.99"/>
</a>
</g>
</g>
<!-- Node6 -->
<g id="Node000006" class="node">
<g id="node6" class="node">
<title>Node6</title>
<g id="a_Node000006"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ac7761255f2ba06b398b9aae5e4dce5f3" target="_top" xlink:title="The function lifts a node, k units up the tree. The lifting is done in place, and the result is store...">
<g id="a_node6"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ac7761255f2ba06b398b9aae5e4dce5f3" target="_top" xlink:title="The function lifts a node, k units up the tree. The lifting is done in place, and the result is store...">
<polygon fill="white" stroke="#666666" points="399,-41.75 290,-41.75 290,0 399,0 399,-41.75"/>
<text text-anchor="start" x="298" y="-28.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="298" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -119,28 +97,10 @@
</g>
</g>
<!-- Node5&#45;&gt;Node6 -->
<g id="edge5_Node000005_Node000006" class="edge">
<g id="edge5" class="edge">
<title>Node5&#45;&gt;Node6</title>
<g id="a_edge5_Node000005_Node000006"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M254.15,-20.88C262.2,-20.88 270.57,-20.88 278.81,-20.88"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="278.54,-24.38 288.54,-20.88 278.54,-17.38 278.54,-24.38"/>
</a>
</g>
</g>
</g>
</svg>
</svg>
<style type='text/css'>
<![CDATA[
[data-mouse-over-selected='false'] { opacity: 0.7; }
[data-mouse-over-selected='true'] { opacity: 1.0; }
]]>
</style>
<script type="application/ecmascript"><![CDATA[
document.addEventListener('DOMContentLoaded', (event) => {
highlightEdges();
highlightAdjacentNodes();
});
]]></script>
</svg>

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@@ -1,121 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 8.0.5 (20230430.1635)
-->
<!-- Title: range_queries::heavy_light_decomposition::HLD::query Pages: 1 -->
<svg width="407pt" height="153pt"
viewBox="0.00 0.00 407.00 152.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 148.75)">
<title>range_queries::heavy_light_decomposition::HLD::query</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="This function returns the sum of node values in the simple path from from node_1 to node_2.">
<polygon fill="#999999" stroke="#666666" points="109,-71.75 0,-71.75 0,-30 109,-30 109,-71.75"/>
<text text-anchor="start" x="8" y="-58.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="8" y="-47" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="54.5" y="-35.75" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::query</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a7d5b40c076347a6aabfb37a0590f2f24" target="_top" xlink:title="Utility function to break down a path query into two chain queries.">
<polygon fill="white" stroke="#666666" points="254,-101.75 145,-101.75 145,-60 254,-60 254,-101.75"/>
<text text-anchor="start" x="153" y="-88.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="153" y="-77" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="199.5" y="-65.75" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::chain_query</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M109.15,-62.13C117.2,-63.82 125.57,-65.57 133.81,-67.3"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="133.04,-70.93 143.54,-69.56 134.48,-64.08 133.04,-70.93"/>
</a>
</g>
</g>
<!-- Node5 -->
<g id="Node000005" class="node">
<title>Node5</title>
<g id="a_Node000005"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae2b407e64aaf9878fbee7ee6efe9c7d4" target="_top" xlink:title="The function returns the least common ancestor of two nodes.">
<polygon fill="white" stroke="#666666" points="254,-41.75 145,-41.75 145,0 254,0 254,-41.75"/>
<text text-anchor="start" x="153" y="-28.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="153" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="199.5" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lca</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node5 -->
<g id="edge4_Node000001_Node000005" class="edge">
<title>Node1&#45;&gt;Node5</title>
<g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M109.15,-39.62C117.2,-37.93 125.57,-36.18 133.81,-34.45"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="134.48,-37.67 143.54,-32.19 133.04,-30.82 134.48,-37.67"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="Node000003" class="node">
<title>Node3</title>
<g id="a_Node000003"><a xlink:href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74" target="_top" xlink:title="Function that specifies the type of operation involved when segments are combined.">
<polygon fill="white" stroke="#666666" points="399,-144.75 290,-144.75 290,-103 399,-103 399,-144.75"/>
<text text-anchor="start" x="298" y="-131.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="298" y="-120" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="344.5" y="-108.75" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::combine</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge2_Node000002_Node000003" class="edge">
<title>Node2&#45;&gt;Node3</title>
<g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M254.15,-97.01C262.29,-99.46 270.76,-102 279.09,-104.51"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="277.96,-108.12 288.54,-107.65 279.98,-101.42 277.96,-108.12"/>
</a>
</g>
</g>
<!-- Node4 -->
<g id="Node000004" class="node">
<title>Node4</title>
<g id="a_Node000004"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="373.88,-84.5 315.12,-84.5 315.12,-65.25 373.88,-65.25 373.88,-84.5"/>
<text text-anchor="middle" x="344.5" y="-71" font-family="Helvetica,sans-Serif" font-size="10.00">std::swap</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node4 -->
<g id="edge3_Node000002_Node000004" class="edge">
<title>Node2&#45;&gt;Node4</title>
<g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M254.15,-78.62C270.74,-77.93 288.68,-77.17 304.11,-76.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="304,-79.99 313.85,-76.08 303.71,-73 304,-79.99"/>
</a>
</g>
</g>
<!-- Node6 -->
<g id="Node000006" class="node">
<title>Node6</title>
<g id="a_Node000006"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ac7761255f2ba06b398b9aae5e4dce5f3" target="_top" xlink:title="The function lifts a node, k units up the tree. The lifting is done in place, and the result is store...">
<polygon fill="white" stroke="#666666" points="399,-41.75 290,-41.75 290,0 399,0 399,-41.75"/>
<text text-anchor="start" x="298" y="-28.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="298" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="344.5" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lift</text>
</a>
</g>
</g>
<!-- Node5&#45;&gt;Node6 -->
<g id="edge5_Node000005_Node000006" class="edge">
<title>Node5&#45;&gt;Node6</title>
<g id="a_edge5_Node000005_Node000006"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M254.15,-20.88C262.2,-20.88 270.57,-20.88 278.81,-20.88"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="278.54,-24.38 288.54,-20.88 278.54,-17.38 278.54,-24.38"/>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 6.8 KiB

View File

@@ -1,7 +1,5 @@
<map id="range_queries::heavy_light_decomposition::HLD::chain_query" name="range_queries::heavy_light_decomposition::HLD::chain_query">
<area shape="rect" id="Node000001" title="Utility function to break down a path query into two chain queries." alt="" coords="5,39,151,94"/>
<area shape="rect" id="Node000002" href="$d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74" title="Function that specifies the type of operation involved when segments are combined." alt="" coords="199,5,344,61"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="150,51,183,46,184,51,151,57"/>
<area shape="rect" id="Node000003" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/swap.html#" title=" " alt="" coords="232,86,311,111"/>
<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="151,76,218,87,217,92,150,81"/>
<area shape="rect" id="node1" title="Utility function to break down a path query into two chain queries." alt="" coords="5,39,151,94"/>
<area shape="rect" id="node2" href="$d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74" title="Function that specifies the type of operation involved when segments are combined." alt="" coords="199,5,344,61"/>
<area shape="rect" id="node3" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/swap.html#" title=" " alt="" coords="232,86,311,111"/>
</map>

View File

@@ -1 +1 @@
12e76c1512b957760253c826b8286917
3be3e757a65d1d62a05700855532f009

View File

@@ -6,22 +6,12 @@
<!-- Title: range_queries::heavy_light_decomposition::HLD::chain_query Pages: 1 -->
<svg width="262pt" height="88pt"
viewBox="0.00 0.00 262.00 87.50" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
<style type="text/css"><![CDATA[
.node, .edge {opacity: 0.7;}
.node.selected, .edge.selected {opacity: 1;}
.edge:hover path { stroke: red; }
.edge:hover polygon { stroke: red; fill: red; }
]]></style>
<script type="application/ecmascript" xlink:href="../../svg.min.js"/>
<svg id="graph" class="graph">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 83.5)">
<title>range_queries::heavy_light_decomposition::HLD::chain_query</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<g id="node1" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Utility function to break down a path query into two chain queries.">
<g id="a_node1"><a xlink:title="Utility function to break down a path query into two chain queries.">
<polygon fill="#999999" stroke="#666666" points="109,-54.5 0,-54.5 0,-12.75 109,-12.75 109,-54.5"/>
<text text-anchor="start" x="8" y="-41" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="8" y="-29.75" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -30,9 +20,9 @@
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<g id="node2" class="node">
<title>Node2</title>
<g id="a_Node000002"><a xlink:href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74" target="_top" xlink:title="Function that specifies the type of operation involved when segments are combined.">
<g id="a_node2"><a xlink:href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74" target="_top" xlink:title="Function that specifies the type of operation involved when segments are combined.">
<polygon fill="white" stroke="#666666" points="254,-79.5 145,-79.5 145,-37.75 254,-37.75 254,-79.5"/>
<text text-anchor="start" x="153" y="-66" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="153" y="-54.75" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -41,46 +31,25 @@
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1_Node000001_Node000002" class="edge">
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M109.15,-43.01C117.2,-44.41 125.57,-45.87 133.81,-47.32"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="133.09,-50.92 143.54,-49.19 134.3,-44.02 133.09,-50.92"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="Node000003" class="node">
<g id="node3" class="node">
<title>Node3</title>
<g id="a_Node000003"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap.html#" xlink:title=" ">
<g id="a_node3"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="228.88,-19.25 170.12,-19.25 170.12,0 228.88,0 228.88,-19.25"/>
<text text-anchor="middle" x="199.5" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::swap</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2_Node000001_Node000003" class="edge">
<g id="edge2" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M109.15,-24.62C125.74,-21.84 143.68,-18.82 159.11,-16.24"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="159.57,-19.54 168.85,-14.43 158.41,-12.64 159.57,-19.54"/>
</a>
</g>
</g>
</g>
</svg>
</svg>
<style type='text/css'>
<![CDATA[
[data-mouse-over-selected='false'] { opacity: 0.7; }
[data-mouse-over-selected='true'] { opacity: 1.0; }
]]>
</style>
<script type="application/ecmascript"><![CDATA[
document.addEventListener('DOMContentLoaded', (event) => {
highlightEdges();
highlightAdjacentNodes();
});
]]></script>
</svg>

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -1,61 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 8.0.5 (20230430.1635)
-->
<!-- Title: range_queries::heavy_light_decomposition::HLD::chain_query Pages: 1 -->
<svg width="262pt" height="88pt"
viewBox="0.00 0.00 262.00 87.50" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 83.5)">
<title>range_queries::heavy_light_decomposition::HLD::chain_query</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Utility function to break down a path query into two chain queries.">
<polygon fill="#999999" stroke="#666666" points="109,-54.5 0,-54.5 0,-12.75 109,-12.75 109,-54.5"/>
<text text-anchor="start" x="8" y="-41" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="8" y="-29.75" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="54.5" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::chain_query</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a xlink:href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74" target="_top" xlink:title="Function that specifies the type of operation involved when segments are combined.">
<polygon fill="white" stroke="#666666" points="254,-79.5 145,-79.5 145,-37.75 254,-37.75 254,-79.5"/>
<text text-anchor="start" x="153" y="-66" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="153" y="-54.75" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="199.5" y="-43.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::combine</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M109.15,-43.01C117.2,-44.41 125.57,-45.87 133.81,-47.32"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="133.09,-50.92 143.54,-49.19 134.3,-44.02 133.09,-50.92"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="Node000003" class="node">
<title>Node3</title>
<g id="a_Node000003"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="228.88,-19.25 170.12,-19.25 170.12,0 228.88,0 228.88,-19.25"/>
<text text-anchor="middle" x="199.5" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::swap</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M109.15,-24.62C125.74,-21.84 143.68,-18.82 159.11,-16.24"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="159.57,-19.54 168.85,-14.43 158.41,-12.64 159.57,-19.54"/>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.2 KiB

View File

@@ -1,5 +1,4 @@
<map id="range_queries::heavy_light_decomposition::HLD::update" name="range_queries::heavy_light_decomposition::HLD::update">
<area shape="rect" id="Node000001" title="This function updates the value at node with val." alt="" coords="5,5,151,61"/>
<area shape="rect" id="Node000002" href="$d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c" title="Update the value at a node." alt="" coords="199,5,344,61"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="151,31,184,31,184,36,151,36"/>
<area shape="rect" id="node1" title="This function updates the value at node with val." alt="" coords="5,5,151,61"/>
<area shape="rect" id="node2" href="$d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c" title="Update the value at a node." alt="" coords="199,5,344,61"/>
</map>

View File

@@ -1 +1 @@
6df3b32539a830377e5d1b3e373845d5
67cbbbcb309192b2f5ac66cc5c2a4729

View File

@@ -6,22 +6,12 @@
<!-- Title: range_queries::heavy_light_decomposition::HLD::update Pages: 1 -->
<svg width="262pt" height="50pt"
viewBox="0.00 0.00 262.00 49.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
<style type="text/css"><![CDATA[
.node, .edge {opacity: 0.7;}
.node.selected, .edge.selected {opacity: 1;}
.edge:hover path { stroke: red; }
.edge:hover polygon { stroke: red; fill: red; }
]]></style>
<script type="application/ecmascript" xlink:href="../../svg.min.js"/>
<svg id="graph" class="graph">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 45.75)">
<title>range_queries::heavy_light_decomposition::HLD::update</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<g id="node1" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="This function updates the value at node with val.">
<g id="a_node1"><a xlink:title="This function updates the value at node with val.">
<polygon fill="#999999" stroke="#666666" points="109,-41.75 0,-41.75 0,0 109,0 109,-41.75"/>
<text text-anchor="start" x="8" y="-28.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="8" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -30,9 +20,9 @@
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<g id="node2" class="node">
<title>Node2</title>
<g id="a_Node000002"><a xlink:href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c" target="_top" xlink:title="Update the value at a node.">
<g id="a_node2"><a xlink:href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c" target="_top" xlink:title="Update the value at a node.">
<polygon fill="white" stroke="#666666" points="254,-41.75 145,-41.75 145,0 254,0 254,-41.75"/>
<text text-anchor="start" x="153" y="-28.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="153" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -41,28 +31,10 @@
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1_Node000001_Node000002" class="edge">
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M109.15,-20.88C117.2,-20.88 125.57,-20.88 133.81,-20.88"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="133.54,-24.38 143.54,-20.88 133.54,-17.38 133.54,-24.38"/>
</a>
</g>
</g>
</g>
</svg>
</svg>
<style type='text/css'>
<![CDATA[
[data-mouse-over-selected='false'] { opacity: 0.7; }
[data-mouse-over-selected='true'] { opacity: 1.0; }
]]>
</style>
<script type="application/ecmascript"><![CDATA[
document.addEventListener('DOMContentLoaded', (event) => {
highlightEdges();
highlightAdjacentNodes();
});
]]></script>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -1,43 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 8.0.5 (20230430.1635)
-->
<!-- Title: range_queries::heavy_light_decomposition::HLD::update Pages: 1 -->
<svg width="262pt" height="50pt"
viewBox="0.00 0.00 262.00 49.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 45.75)">
<title>range_queries::heavy_light_decomposition::HLD::update</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="This function updates the value at node with val.">
<polygon fill="#999999" stroke="#666666" points="109,-41.75 0,-41.75 0,0 109,0 109,-41.75"/>
<text text-anchor="start" x="8" y="-28.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="8" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="54.5" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::update</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a xlink:href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c" target="_top" xlink:title="Update the value at a node.">
<polygon fill="white" stroke="#666666" points="254,-41.75 145,-41.75 145,0 254,0 254,-41.75"/>
<text text-anchor="start" x="153" y="-28.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="153" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="199.5" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::update</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M109.15,-20.88C117.2,-20.88 125.57,-20.88 133.81,-20.88"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="133.54,-24.38 143.54,-20.88 133.54,-17.38 133.54,-24.38"/>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -1,22 +1,10 @@
<map id="range_queries::heavy_light_decomposition::HLD::init" name="range_queries::heavy_light_decomposition::HLD::init">
<area shape="rect" id="Node000001" title="This function must be called after the tree adjacency list and node values are populated The function..." alt="" coords="5,213,151,269"/>
<area shape="rect" id="Node000002" href="$d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74" title="Function that specifies the type of operation involved when segments are combined." alt="" coords="199,5,344,61"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="92,211,135,143,164,106,197,71,201,68,204,72,201,75,168,109,139,146,97,214"/>
<area shape="rect" id="Node000003" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#af64848d6630c39d0f09ce2359cc7c4f8" title="Utility function to assign heavy child to each node (&#45;1 for a leaf node)" alt="" coords="199,109,344,165"/>
<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="130,210,204,170,207,175,133,215"/>
<area shape="rect" id="Node000004" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8" title="Utility function to lable the nodes so that heavy chains have a contigous lable." alt="" coords="199,213,344,269"/>
<area shape="poly" id="edge4_Node000001_Node000004" title=" " alt="" coords="151,239,184,239,184,244,151,244"/>
<area shape="rect" id="Node000005" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a" title="Utility function to assign highest parent that can be reached though heavy chains." alt="" coords="199,317,344,373"/>
<area shape="poly" id="edge6_Node000001_Node000005" title=" " alt="" coords="133,267,207,308,204,312,130,272"/>
<area shape="rect" id="Node000006" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ad22d760a5a33545a70e7ea5e1786c8dc" title="This function must be called after the tree adjacency list and node values are populated The function..." alt="" coords="199,397,344,453"/>
<area shape="poly" id="edge8_Node000001_Node000006" title=" " alt="" coords="100,268,143,324,170,355,200,383,205,386,201,391,197,387,167,359,139,328,96,271"/>
<area shape="poly" id="edge3_Node000003_Node000003" title=" " alt="" coords="233,109,233,99,240,90,253,85,271,83,292,85,305,93,302,97,291,91,271,88,254,90,244,95,238,101,238,109"/>
<area shape="poly" id="edge5_Node000004_Node000004" title=" " alt="" coords="233,213,233,203,240,194,253,189,271,187,292,189,305,197,302,201,291,195,271,192,254,194,244,199,238,205,238,213"/>
<area shape="poly" id="edge7_Node000005_Node000005" title=" " alt="" coords="233,317,233,307,240,298,253,293,271,291,292,293,305,301,302,305,291,299,271,296,254,298,244,303,238,309,238,317"/>
<area shape="rect" id="Node000007" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae8de7aefcb6635d3dacdd174cd4890c4" title="Utility function to populate the t_par vector." alt="" coords="392,345,537,401"/>
<area shape="poly" id="edge9_Node000006_Node000007" title=" " alt="" coords="344,403,377,394,378,399,345,408"/>
<area shape="rect" id="Node000008" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa339c31ec74cd86a4842a8b09653d460" title="Utility function to compute sub&#45;tree sizes." alt="" coords="392,449,537,505"/>
<area shape="poly" id="edge11_Node000006_Node000008" title=" " alt="" coords="345,442,378,451,377,456,344,447"/>
<area shape="poly" id="edge10_Node000007_Node000007" title=" " alt="" coords="426,345,427,335,434,326,446,321,465,319,486,321,498,329,496,333,484,327,465,324,448,326,437,331,432,337,432,345"/>
<area shape="poly" id="edge12_Node000008_Node000008" title=" " alt="" coords="426,449,427,439,434,430,446,425,465,423,486,425,498,433,496,437,484,431,465,428,448,430,437,435,432,441,432,449"/>
<area shape="rect" id="node1" title="This function must be called after the tree adjacency list and node values are populated The function..." alt="" coords="5,213,151,269"/>
<area shape="rect" id="node2" href="$d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74" title="Function that specifies the type of operation involved when segments are combined." alt="" coords="199,5,344,61"/>
<area shape="rect" id="node3" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#af64848d6630c39d0f09ce2359cc7c4f8" title="Utility function to assign heavy child to each node (&#45;1 for a leaf node)" alt="" coords="199,109,344,165"/>
<area shape="rect" id="node4" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8" title="Utility function to lable the nodes so that heavy chains have a contigous lable." alt="" coords="199,213,344,269"/>
<area shape="rect" id="node5" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a" title="Utility function to assign highest parent that can be reached though heavy chains." alt="" coords="199,317,344,373"/>
<area shape="rect" id="node6" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ad22d760a5a33545a70e7ea5e1786c8dc" title="This function must be called after the tree adjacency list and node values are populated The function..." alt="" coords="199,397,344,453"/>
<area shape="rect" id="node7" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae8de7aefcb6635d3dacdd174cd4890c4" title="Utility function to populate the t_par vector." alt="" coords="392,345,537,401"/>
<area shape="rect" id="node8" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa339c31ec74cd86a4842a8b09653d460" title="Utility function to compute sub&#45;tree sizes." alt="" coords="392,449,537,505"/>
</map>

View File

@@ -1 +1 @@
301f234ffbc3cf902b0f0a3d9384b56c
34aad07d355b428e5e867684cde8bbb5

View File

@@ -6,22 +6,12 @@
<!-- Title: range_queries::heavy_light_decomposition::HLD::init Pages: 1 -->
<svg width="407pt" height="383pt"
viewBox="0.00 0.00 407.00 382.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
<style type="text/css"><![CDATA[
.node, .edge {opacity: 0.7;}
.node.selected, .edge.selected {opacity: 1;}
.edge:hover path { stroke: red; }
.edge:hover polygon { stroke: red; fill: red; }
]]></style>
<script type="application/ecmascript" xlink:href="../../svg.min.js"/>
<svg id="graph" class="graph">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 378.75)">
<title>range_queries::heavy_light_decomposition::HLD::init</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<g id="node1" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="This function must be called after the tree adjacency list and node values are populated The function...">
<g id="a_node1"><a xlink:title="This function must be called after the tree adjacency list and node values are populated The function...">
<polygon fill="#999999" stroke="#666666" points="109,-218.75 0,-218.75 0,-177 109,-177 109,-218.75"/>
<text text-anchor="start" x="8" y="-205.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="8" y="-194" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -30,9 +20,9 @@
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<g id="node2" class="node">
<title>Node2</title>
<g id="a_Node000002"><a xlink:href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74" target="_top" xlink:title="Function that specifies the type of operation involved when segments are combined.">
<g id="a_node2"><a xlink:href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74" target="_top" xlink:title="Function that specifies the type of operation involved when segments are combined.">
<polygon fill="white" stroke="#666666" points="254,-374.75 145,-374.75 145,-333 254,-333 254,-374.75"/>
<text text-anchor="start" x="153" y="-361.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="153" y="-350" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -41,18 +31,15 @@
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1_Node000001_Node000002" class="edge">
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M66.74,-219.24C81.74,-246.21 110.48,-292.85 145,-323.88 145.87,-324.66 146.77,-325.43 147.68,-326.19"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="145.26,-329.49 155.37,-332.67 149.45,-323.89 145.26,-329.49"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="Node000003" class="node">
<g id="node3" class="node">
<title>Node3</title>
<g id="a_Node000003"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#af64848d6630c39d0f09ce2359cc7c4f8" target="_top" xlink:title="Utility function to assign heavy child to each node (&#45;1 for a leaf node)">
<g id="a_node3"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#af64848d6630c39d0f09ce2359cc7c4f8" target="_top" xlink:title="Utility function to assign heavy child to each node (&#45;1 for a leaf node)">
<polygon fill="white" stroke="#666666" points="254,-296.75 145,-296.75 145,-255 254,-255 254,-296.75"/>
<text text-anchor="start" x="153" y="-283.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="153" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -61,18 +48,15 @@
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2_Node000001_Node000003" class="edge">
<g id="edge2" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M94.58,-219.19C111.76,-228.56 132.11,-239.66 150.23,-249.55"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="148.02,-252.87 158.47,-254.59 151.37,-246.73 148.02,-252.87"/>
</a>
</g>
</g>
<!-- Node4 -->
<g id="Node000004" class="node">
<g id="node4" class="node">
<title>Node4</title>
<g id="a_Node000004"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8" target="_top" xlink:title="Utility function to lable the nodes so that heavy chains have a contigous lable.">
<g id="a_node4"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8" target="_top" xlink:title="Utility function to lable the nodes so that heavy chains have a contigous lable.">
<polygon fill="white" stroke="#666666" points="254,-218.75 145,-218.75 145,-177 254,-177 254,-218.75"/>
<text text-anchor="start" x="153" y="-205.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="153" y="-194" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -81,18 +65,15 @@
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge4_Node000001_Node000004" class="edge">
<g id="edge4" class="edge">
<title>Node1&#45;&gt;Node4</title>
<g id="a_edge4_Node000001_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M109.15,-197.88C117.2,-197.88 125.57,-197.88 133.81,-197.88"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="133.54,-201.38 143.54,-197.88 133.54,-194.38 133.54,-201.38"/>
</a>
</g>
</g>
<!-- Node5 -->
<g id="Node000005" class="node">
<g id="node5" class="node">
<title>Node5</title>
<g id="a_Node000005"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a" target="_top" xlink:title="Utility function to assign highest parent that can be reached though heavy chains.">
<g id="a_node5"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a" target="_top" xlink:title="Utility function to assign highest parent that can be reached though heavy chains.">
<polygon fill="white" stroke="#666666" points="254,-140.75 145,-140.75 145,-99 254,-99 254,-140.75"/>
<text text-anchor="start" x="153" y="-127.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="153" y="-116" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -101,18 +82,15 @@
</g>
</g>
<!-- Node1&#45;&gt;Node5 -->
<g id="edge6_Node000001_Node000005" class="edge">
<g id="edge6" class="edge">
<title>Node1&#45;&gt;Node5</title>
<g id="a_edge6_Node000001_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M94.58,-176.56C111.76,-167.19 132.11,-156.09 150.23,-146.2"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="151.37,-149.02 158.47,-141.16 148.02,-142.88 151.37,-149.02"/>
</a>
</g>
</g>
<!-- Node6 -->
<g id="Node000006" class="node">
<g id="node6" class="node">
<title>Node6</title>
<g id="a_Node000006"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ad22d760a5a33545a70e7ea5e1786c8dc" target="_top" xlink:title="This function must be called after the tree adjacency list and node values are populated The function...">
<g id="a_node6"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ad22d760a5a33545a70e7ea5e1786c8dc" target="_top" xlink:title="This function must be called after the tree adjacency list and node values are populated The function...">
<polygon fill="white" stroke="#666666" points="254,-80.75 145,-80.75 145,-39 254,-39 254,-80.75"/>
<text text-anchor="start" x="153" y="-67.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="153" y="-56" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -121,45 +99,33 @@
</g>
</g>
<!-- Node1&#45;&gt;Node6 -->
<g id="edge8_Node000001_Node000006" class="edge">
<g id="edge8" class="edge">
<title>Node1&#45;&gt;Node6</title>
<g id="a_edge8_Node000001_Node000006"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M69.39,-176.81C85.54,-153.49 113.95,-115.76 145,-89.88 146.04,-89.01 147.1,-88.16 148.19,-87.32"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="149.74,-89.8 155.88,-81.17 145.7,-84.09 149.74,-89.8"/>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node3 -->
<g id="edge3_Node000003_Node000003" class="edge">
<g id="edge3" class="edge">
<title>Node3&#45;&gt;Node3</title>
<g id="a_edge3_Node000003_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M172.74,-297.07C170.19,-306.55 179.11,-314.75 199.5,-314.75 211.61,-314.75 219.67,-311.86 223.69,-307.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="227.27,-308.61 226.26,-298.07 220.48,-306.94 227.27,-308.61"/>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node4 -->
<g id="edge5_Node000004_Node000004" class="edge">
<g id="edge5" class="edge">
<title>Node4&#45;&gt;Node4</title>
<g id="a_edge5_Node000004_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M172.74,-219.07C170.19,-228.55 179.11,-236.75 199.5,-236.75 211.61,-236.75 219.67,-233.86 223.69,-229.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="227.27,-230.61 226.26,-220.07 220.48,-228.94 227.27,-230.61"/>
</a>
</g>
</g>
<!-- Node5&#45;&gt;Node5 -->
<g id="edge7_Node000005_Node000005" class="edge">
<g id="edge7" class="edge">
<title>Node5&#45;&gt;Node5</title>
<g id="a_edge7_Node000005_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M172.74,-141.07C170.19,-150.55 179.11,-158.75 199.5,-158.75 211.61,-158.75 219.67,-155.86 223.69,-151.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="227.27,-152.61 226.26,-142.07 220.48,-150.94 227.27,-152.61"/>
</a>
</g>
</g>
<!-- Node7 -->
<g id="Node000007" class="node">
<g id="node7" class="node">
<title>Node7</title>
<g id="a_Node000007"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae8de7aefcb6635d3dacdd174cd4890c4" target="_top" xlink:title="Utility function to populate the t_par vector.">
<g id="a_node7"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae8de7aefcb6635d3dacdd174cd4890c4" target="_top" xlink:title="Utility function to populate the t_par vector.">
<polygon fill="white" stroke="#666666" points="399,-119.75 290,-119.75 290,-78 399,-78 399,-119.75"/>
<text text-anchor="start" x="298" y="-106.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="298" y="-95" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -168,18 +134,15 @@
</g>
</g>
<!-- Node6&#45;&gt;Node7 -->
<g id="edge9_Node000006_Node000007" class="edge">
<g id="edge9" class="edge">
<title>Node6&#45;&gt;Node7</title>
<g id="a_edge9_Node000006_Node000007"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M254.15,-74.51C262.29,-76.73 270.76,-79.04 279.09,-81.31"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="277.98,-84.91 288.54,-84.16 279.82,-78.15 277.98,-84.91"/>
</a>
</g>
</g>
<!-- Node8 -->
<g id="Node000008" class="node">
<g id="node8" class="node">
<title>Node8</title>
<g id="a_Node000008"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa339c31ec74cd86a4842a8b09653d460" target="_top" xlink:title="Utility function to compute sub&#45;tree sizes.">
<g id="a_node8"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa339c31ec74cd86a4842a8b09653d460" target="_top" xlink:title="Utility function to compute sub&#45;tree sizes.">
<polygon fill="white" stroke="#666666" points="399,-41.75 290,-41.75 290,0 399,0 399,-41.75"/>
<text text-anchor="start" x="298" y="-28.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="298" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -188,46 +151,22 @@
</g>
</g>
<!-- Node6&#45;&gt;Node8 -->
<g id="edge11_Node000006_Node000008" class="edge">
<g id="edge11" class="edge">
<title>Node6&#45;&gt;Node8</title>
<g id="a_edge11_Node000006_Node000008"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M254.15,-45.24C262.29,-43.02 270.76,-40.71 279.09,-38.44"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="279.82,-41.6 288.54,-35.59 277.98,-34.84 279.82,-41.6"/>
</a>
</g>
</g>
<!-- Node7&#45;&gt;Node7 -->
<g id="edge10_Node000007_Node000007" class="edge">
<g id="edge10" class="edge">
<title>Node7&#45;&gt;Node7</title>
<g id="a_edge10_Node000007_Node000007"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M317.74,-120.07C315.19,-129.55 324.11,-137.75 344.5,-137.75 356.61,-137.75 364.67,-134.86 368.69,-130.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="372.27,-131.61 371.26,-121.07 365.48,-129.94 372.27,-131.61"/>
</a>
</g>
</g>
<!-- Node8&#45;&gt;Node8 -->
<g id="edge12_Node000008_Node000008" class="edge">
<g id="edge12" class="edge">
<title>Node8&#45;&gt;Node8</title>
<g id="a_edge12_Node000008_Node000008"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M317.74,-42.07C315.19,-51.55 324.11,-59.75 344.5,-59.75 356.61,-59.75 364.67,-56.86 368.69,-52.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="372.27,-53.61 371.26,-43.07 365.48,-51.94 372.27,-53.61"/>
</a>
</g>
</g>
</g>
</svg>
</svg>
<style type='text/css'>
<![CDATA[
[data-mouse-over-selected='false'] { opacity: 0.7; }
[data-mouse-over-selected='true'] { opacity: 1.0; }
]]>
</style>
<script type="application/ecmascript"><![CDATA[
document.addEventListener('DOMContentLoaded', (event) => {
highlightEdges();
highlightAdjacentNodes();
});
]]></script>
</svg>

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -1,208 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 8.0.5 (20230430.1635)
-->
<!-- Title: range_queries::heavy_light_decomposition::HLD::init Pages: 1 -->
<svg width="407pt" height="383pt"
viewBox="0.00 0.00 407.00 382.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 378.75)">
<title>range_queries::heavy_light_decomposition::HLD::init</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="This function must be called after the tree adjacency list and node values are populated The function...">
<polygon fill="#999999" stroke="#666666" points="109,-218.75 0,-218.75 0,-177 109,-177 109,-218.75"/>
<text text-anchor="start" x="8" y="-205.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="8" y="-194" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="54.5" y="-182.75" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::init</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a xlink:href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74" target="_top" xlink:title="Function that specifies the type of operation involved when segments are combined.">
<polygon fill="white" stroke="#666666" points="254,-374.75 145,-374.75 145,-333 254,-333 254,-374.75"/>
<text text-anchor="start" x="153" y="-361.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="153" y="-350" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="199.5" y="-338.75" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::combine</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M66.74,-219.24C81.74,-246.21 110.48,-292.85 145,-323.88 145.87,-324.66 146.77,-325.43 147.68,-326.19"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="145.26,-329.49 155.37,-332.67 149.45,-323.89 145.26,-329.49"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="Node000003" class="node">
<title>Node3</title>
<g id="a_Node000003"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#af64848d6630c39d0f09ce2359cc7c4f8" target="_top" xlink:title="Utility function to assign heavy child to each node (&#45;1 for a leaf node)">
<polygon fill="white" stroke="#666666" points="254,-296.75 145,-296.75 145,-255 254,-255 254,-296.75"/>
<text text-anchor="start" x="153" y="-283.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="153" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="199.5" y="-260.75" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_hc</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M94.58,-219.19C111.76,-228.56 132.11,-239.66 150.23,-249.55"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="148.02,-252.87 158.47,-254.59 151.37,-246.73 148.02,-252.87"/>
</a>
</g>
</g>
<!-- Node4 -->
<g id="Node000004" class="node">
<title>Node4</title>
<g id="a_Node000004"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8" target="_top" xlink:title="Utility function to lable the nodes so that heavy chains have a contigous lable.">
<polygon fill="white" stroke="#666666" points="254,-218.75 145,-218.75 145,-177 254,-177 254,-218.75"/>
<text text-anchor="start" x="153" y="-205.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="153" y="-194" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="199.5" y="-182.75" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_labels</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge4_Node000001_Node000004" class="edge">
<title>Node1&#45;&gt;Node4</title>
<g id="a_edge4_Node000001_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M109.15,-197.88C117.2,-197.88 125.57,-197.88 133.81,-197.88"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="133.54,-201.38 143.54,-197.88 133.54,-194.38 133.54,-201.38"/>
</a>
</g>
</g>
<!-- Node5 -->
<g id="Node000005" class="node">
<title>Node5</title>
<g id="a_Node000005"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a" target="_top" xlink:title="Utility function to assign highest parent that can be reached though heavy chains.">
<polygon fill="white" stroke="#666666" points="254,-140.75 145,-140.75 145,-99 254,-99 254,-140.75"/>
<text text-anchor="start" x="153" y="-127.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="153" y="-116" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="199.5" y="-104.75" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_par</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node5 -->
<g id="edge6_Node000001_Node000005" class="edge">
<title>Node1&#45;&gt;Node5</title>
<g id="a_edge6_Node000001_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M94.58,-176.56C111.76,-167.19 132.11,-156.09 150.23,-146.2"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="151.37,-149.02 158.47,-141.16 148.02,-142.88 151.37,-149.02"/>
</a>
</g>
</g>
<!-- Node6 -->
<g id="Node000006" class="node">
<title>Node6</title>
<g id="a_Node000006"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ad22d760a5a33545a70e7ea5e1786c8dc" target="_top" xlink:title="This function must be called after the tree adjacency list and node values are populated The function...">
<polygon fill="white" stroke="#666666" points="254,-80.75 145,-80.75 145,-39 254,-39 254,-80.75"/>
<text text-anchor="start" x="153" y="-67.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="153" y="-56" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="199.5" y="-44.75" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::init</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node6 -->
<g id="edge8_Node000001_Node000006" class="edge">
<title>Node1&#45;&gt;Node6</title>
<g id="a_edge8_Node000001_Node000006"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M69.39,-176.81C85.54,-153.49 113.95,-115.76 145,-89.88 146.04,-89.01 147.1,-88.16 148.19,-87.32"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="149.74,-89.8 155.88,-81.17 145.7,-84.09 149.74,-89.8"/>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node3 -->
<g id="edge3_Node000003_Node000003" class="edge">
<title>Node3&#45;&gt;Node3</title>
<g id="a_edge3_Node000003_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M172.74,-297.07C170.19,-306.55 179.11,-314.75 199.5,-314.75 211.61,-314.75 219.67,-311.86 223.69,-307.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="227.27,-308.61 226.26,-298.07 220.48,-306.94 227.27,-308.61"/>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node4 -->
<g id="edge5_Node000004_Node000004" class="edge">
<title>Node4&#45;&gt;Node4</title>
<g id="a_edge5_Node000004_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M172.74,-219.07C170.19,-228.55 179.11,-236.75 199.5,-236.75 211.61,-236.75 219.67,-233.86 223.69,-229.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="227.27,-230.61 226.26,-220.07 220.48,-228.94 227.27,-230.61"/>
</a>
</g>
</g>
<!-- Node5&#45;&gt;Node5 -->
<g id="edge7_Node000005_Node000005" class="edge">
<title>Node5&#45;&gt;Node5</title>
<g id="a_edge7_Node000005_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M172.74,-141.07C170.19,-150.55 179.11,-158.75 199.5,-158.75 211.61,-158.75 219.67,-155.86 223.69,-151.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="227.27,-152.61 226.26,-142.07 220.48,-150.94 227.27,-152.61"/>
</a>
</g>
</g>
<!-- Node7 -->
<g id="Node000007" class="node">
<title>Node7</title>
<g id="a_Node000007"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae8de7aefcb6635d3dacdd174cd4890c4" target="_top" xlink:title="Utility function to populate the t_par vector.">
<polygon fill="white" stroke="#666666" points="399,-119.75 290,-119.75 290,-78 399,-78 399,-119.75"/>
<text text-anchor="start" x="298" y="-106.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="298" y="-95" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="344.5" y="-83.75" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_lca</text>
</a>
</g>
</g>
<!-- Node6&#45;&gt;Node7 -->
<g id="edge9_Node000006_Node000007" class="edge">
<title>Node6&#45;&gt;Node7</title>
<g id="a_edge9_Node000006_Node000007"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M254.15,-74.51C262.29,-76.73 270.76,-79.04 279.09,-81.31"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="277.98,-84.91 288.54,-84.16 279.82,-78.15 277.98,-84.91"/>
</a>
</g>
</g>
<!-- Node8 -->
<g id="Node000008" class="node">
<title>Node8</title>
<g id="a_Node000008"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa339c31ec74cd86a4842a8b09653d460" target="_top" xlink:title="Utility function to compute sub&#45;tree sizes.">
<polygon fill="white" stroke="#666666" points="399,-41.75 290,-41.75 290,0 399,0 399,-41.75"/>
<text text-anchor="start" x="298" y="-28.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="298" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="344.5" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_size</text>
</a>
</g>
</g>
<!-- Node6&#45;&gt;Node8 -->
<g id="edge11_Node000006_Node000008" class="edge">
<title>Node6&#45;&gt;Node8</title>
<g id="a_edge11_Node000006_Node000008"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M254.15,-45.24C262.29,-43.02 270.76,-40.71 279.09,-38.44"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="279.82,-41.6 288.54,-35.59 277.98,-34.84 279.82,-41.6"/>
</a>
</g>
</g>
<!-- Node7&#45;&gt;Node7 -->
<g id="edge10_Node000007_Node000007" class="edge">
<title>Node7&#45;&gt;Node7</title>
<g id="a_edge10_Node000007_Node000007"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M317.74,-120.07C315.19,-129.55 324.11,-137.75 344.5,-137.75 356.61,-137.75 364.67,-134.86 368.69,-130.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="372.27,-131.61 371.26,-121.07 365.48,-129.94 372.27,-131.61"/>
</a>
</g>
</g>
<!-- Node8&#45;&gt;Node8 -->
<g id="edge12_Node000008_Node000008" class="edge">
<title>Node8&#45;&gt;Node8</title>
<g id="a_edge12_Node000008_Node000008"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M317.74,-42.07C315.19,-51.55 324.11,-59.75 344.5,-59.75 356.61,-59.75 364.67,-56.86 368.69,-52.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="372.27,-53.61 371.26,-43.07 365.48,-51.94 372.27,-53.61"/>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -1,4 +1,3 @@
<map id="range_queries::heavy_light_decomposition::HLD::dfs_hc" name="range_queries::heavy_light_decomposition::HLD::dfs_hc">
<area shape="rect" id="Node000001" title="Utility function to assign heavy child to each node (&#45;1 for a leaf node)" alt="" coords="5,29,151,85"/>
<area shape="poly" id="edge1_Node000001_Node000001" title=" " alt="" coords="49,29,49,19,54,10,64,5,78,3,94,6,104,13,101,17,92,10,78,8,66,10,58,14,54,21,54,29"/>
<area shape="rect" id="node1" title="Utility function to assign heavy child to each node (&#45;1 for a leaf node)" alt="" coords="5,29,151,85"/>
</map>

View File

@@ -1 +1 @@
6ec1493c6c9f6ce74673cbc99dcf6bbd
173d81f11628a3e50ed058c757e8ef9c

View File

@@ -6,22 +6,12 @@
<!-- Title: range_queries::heavy_light_decomposition::HLD::dfs_hc Pages: 1 -->
<svg width="117pt" height="68pt"
viewBox="0.00 0.00 117.00 67.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
<style type="text/css"><![CDATA[
.node, .edge {opacity: 0.7;}
.node.selected, .edge.selected {opacity: 1;}
.edge:hover path { stroke: red; }
.edge:hover polygon { stroke: red; fill: red; }
]]></style>
<script type="application/ecmascript" xlink:href="../../svg.min.js"/>
<svg id="graph" class="graph">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 63.75)">
<title>range_queries::heavy_light_decomposition::HLD::dfs_hc</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<g id="node1" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Utility function to assign heavy child to each node (&#45;1 for a leaf node)">
<g id="a_node1"><a xlink:title="Utility function to assign heavy child to each node (&#45;1 for a leaf node)">
<polygon fill="#999999" stroke="#666666" points="109,-41.75 0,-41.75 0,0 109,0 109,-41.75"/>
<text text-anchor="start" x="8" y="-28.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="8" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
@@ -30,28 +20,10 @@
</g>
</g>
<!-- Node1&#45;&gt;Node1 -->
<g id="edge1_Node000001_Node000001" class="edge">
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node1</title>
<g id="a_edge1_Node000001_Node000001"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M34.38,-42.07C32.47,-51.55 39.17,-59.75 54.5,-59.75 63.6,-59.75 69.66,-56.86 72.68,-52.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="76.24,-53.54 74.62,-43.07 69.36,-52.27 76.24,-53.54"/>
</a>
</g>
</g>
</g>
</svg>
</svg>
<style type='text/css'>
<![CDATA[
[data-mouse-over-selected='false'] { opacity: 0.7; }
[data-mouse-over-selected='true'] { opacity: 1.0; }
]]>
</style>
<script type="application/ecmascript"><![CDATA[
document.addEventListener('DOMContentLoaded', (event) => {
highlightEdges();
highlightAdjacentNodes();
});
]]></script>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -1,32 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 8.0.5 (20230430.1635)
-->
<!-- Title: range_queries::heavy_light_decomposition::HLD::dfs_hc Pages: 1 -->
<svg width="117pt" height="68pt"
viewBox="0.00 0.00 117.00 67.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 63.75)">
<title>range_queries::heavy_light_decomposition::HLD::dfs_hc</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Utility function to assign heavy child to each node (&#45;1 for a leaf node)">
<polygon fill="#999999" stroke="#666666" points="109,-41.75 0,-41.75 0,0 109,0 109,-41.75"/>
<text text-anchor="start" x="8" y="-28.25" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="8" y="-17" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="54.5" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_hc</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node1 -->
<g id="edge1_Node000001_Node000001" class="edge">
<title>Node1&#45;&gt;Node1</title>
<g id="a_edge1_Node000001_Node000001"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M34.38,-42.07C32.47,-51.55 39.17,-59.75 54.5,-59.75 63.6,-59.75 69.66,-56.86 72.68,-52.53"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="76.24,-53.54 74.62,-43.07 69.36,-52.27 76.24,-53.54"/>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB