Documentation for 53a6c16730

This commit is contained in:
github-actions
2022-01-16 16:05:19 +00:00
parent 778f1be9e5
commit 2cab28c905
3620 changed files with 52045 additions and 41188 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.2"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: range_queries/heavy_light_decomposition.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@@ -30,8 +30,8 @@ MathJax.Hub.Config({
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
@@ -41,7 +41,7 @@ MathJax.Hub.Config({
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.2 -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
@@ -184,12 +184,12 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
<p >Main function </p>
<div class="fragment"><div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span> {</div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span> <a class="code hl_function" href="../../d2/de9/heavy__light__decomposition_8cpp.html#a34b8683a2b429de5cce57e6d733ec817">test_1</a>();</div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span> <a class="code hl_function" href="../../d2/de9/heavy__light__decomposition_8cpp.html#a458410412185a5f09199deaff7157a8d">test_2</a>();</div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"> 637</span> <a class="code hl_function" href="../../d2/de9/heavy__light__decomposition_8cpp.html#af31ec5409537703d9c8a47350386b32a">test_3</a>();</div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"> 638</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno"> 639</span>}</div>
<div class="fragment"><div class="line"><span class="lineno"> 634</span> {</div>
<div class="line"><span class="lineno"> 635</span> <a class="code hl_function" href="../../d2/de9/heavy__light__decomposition_8cpp.html#a34b8683a2b429de5cce57e6d733ec817">test_1</a>();</div>
<div class="line"><span class="lineno"> 636</span> <a class="code hl_function" href="../../d2/de9/heavy__light__decomposition_8cpp.html#a458410412185a5f09199deaff7157a8d">test_2</a>();</div>
<div class="line"><span class="lineno"> 637</span> <a class="code hl_function" href="../../d2/de9/heavy__light__decomposition_8cpp.html#af31ec5409537703d9c8a47350386b32a">test_3</a>();</div>
<div class="line"><span class="lineno"> 638</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><span class="lineno"> 639</span>}</div>
<div class="ttc" id="aheavy__light__decomposition_8cpp_html_a34b8683a2b429de5cce57e6d733ec817"><div class="ttname"><a href="../../d2/de9/heavy__light__decomposition_8cpp.html#a34b8683a2b429de5cce57e6d733ec817">test_1</a></div><div class="ttdeci">static void test_1()</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:505</div></div>
<div class="ttc" id="aheavy__light__decomposition_8cpp_html_a458410412185a5f09199deaff7157a8d"><div class="ttname"><a href="../../d2/de9/heavy__light__decomposition_8cpp.html#a458410412185a5f09199deaff7157a8d">test_2</a></div><div class="ttdeci">static void test_2()</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:549</div></div>
<div class="ttc" id="aheavy__light__decomposition_8cpp_html_af31ec5409537703d9c8a47350386b32a"><div class="ttname"><a href="../../d2/de9/heavy__light__decomposition_8cpp.html#af31ec5409537703d9c8a47350386b32a">test_3</a></div><div class="ttdeci">static void test_3()</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:592</div></div>
@@ -225,50 +225,50 @@ Here is the call graph for this function:</div>
</table>
</div><div class="memdoc">
<p >Test implementations </p><dl class="section return"><dt>Returns</dt><dd>none </dd></dl>
<div class="fragment"><div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span> {</div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Test 1:\n&quot;</span>;</div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> </div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span> <span class="comment">// Test details</span></div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span> <span class="keywordtype">int</span> n = 5;</div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int64_t&gt;</a> node_values = {4, 2, 5, 2, 1};</div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::vector&lt;int&gt;</a>&gt; edges = {{1, 2}, {1, 3}, {3, 4}, {3, 5}};</div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::vector&lt;int&gt;</a>&gt; queries = {</div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span> {2, 1, 4},</div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> {1, 3, 2},</div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span> {2, 1, 4},</div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span> };</div>
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a> expected_result = {11, 8};</div>
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a> code_result;</div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span> </div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span> <a class="code hl_class" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html">range_queries::heavy_light_decomposition::HLD&lt;int64_t&gt;</a> hld(n);</div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span> hld.set_node_val(node_values);</div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; n - 1; i++) {</div>
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span> <span class="keywordtype">int</span> u = edges[i][0], v = edges[i][1];</div>
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"> 524</span> hld.add_edge(u - 1, v - 1);</div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> }</div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> hld.init();</div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"> 527</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;q : queries) {</div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span> <span class="keywordtype">int</span> type = q[0];</div>
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"> 529</span> <span class="keywordflow">if</span> (type == 1) {</div>
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span> <span class="keywordtype">int</span> p = q[1], x = q[2];</div>
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span> hld.update(p - 1, x);</div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == 2) {</div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span> <span class="keywordtype">int</span> a = q[1], b = q[2];</div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span> code_result.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(hld.query(a - 1, b - 1));</div>
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"> 536</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span> }</div>
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span> }</div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; static_cast&lt;int&gt;(expected_result.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>()); i++) {</div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span> assert(expected_result[i] == code_result[i]);</div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span> }</div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\nTest 1 passed!\n&quot;</span>;</div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span>}</div>
<div class="fragment"><div class="line"><span class="lineno"> 505</span> {</div>
<div class="line"><span class="lineno"> 506</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Test 1:\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 507</span> </div>
<div class="line"><span class="lineno"> 508</span> <span class="comment">// Test details</span></div>
<div class="line"><span class="lineno"> 509</span> <span class="keywordtype">int</span> n = 5;</div>
<div class="line"><span class="lineno"> 510</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int64_t&gt;</a> node_values = {4, 2, 5, 2, 1};</div>
<div class="line"><span class="lineno"> 511</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::vector&lt;int&gt;</a>&gt; edges = {{1, 2}, {1, 3}, {3, 4}, {3, 5}};</div>
<div class="line"><span class="lineno"> 512</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::vector&lt;int&gt;</a>&gt; queries = {</div>
<div class="line"><span class="lineno"> 513</span> {2, 1, 4},</div>
<div class="line"><span class="lineno"> 514</span> {1, 3, 2},</div>
<div class="line"><span class="lineno"> 515</span> {2, 1, 4},</div>
<div class="line"><span class="lineno"> 516</span> };</div>
<div class="line"><span class="lineno"> 517</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a> expected_result = {11, 8};</div>
<div class="line"><span class="lineno"> 518</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a> code_result;</div>
<div class="line"><span class="lineno"> 519</span> </div>
<div class="line"><span class="lineno"> 520</span> <a class="code hl_class" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html">range_queries::heavy_light_decomposition::HLD&lt;int64_t&gt;</a> hld(n);</div>
<div class="line"><span class="lineno"> 521</span> hld.set_node_val(node_values);</div>
<div class="line"><span class="lineno"> 522</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; n - 1; i++) {</div>
<div class="line"><span class="lineno"> 523</span> <span class="keywordtype">int</span> u = edges[i][0], v = edges[i][1];</div>
<div class="line"><span class="lineno"> 524</span> hld.add_edge(u - 1, v - 1);</div>
<div class="line"><span class="lineno"> 525</span> }</div>
<div class="line"><span class="lineno"> 526</span> hld.init();</div>
<div class="line"><span class="lineno"> 527</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;q : queries) {</div>
<div class="line"><span class="lineno"> 528</span> <span class="keywordtype">int</span> type = q[0];</div>
<div class="line"><span class="lineno"> 529</span> <span class="keywordflow">if</span> (type == 1) {</div>
<div class="line"><span class="lineno"> 530</span> <span class="keywordtype">int</span> p = q[1], x = q[2];</div>
<div class="line"><span class="lineno"> 531</span> hld.update(p - 1, x);</div>
<div class="line"><span class="lineno"> 532</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == 2) {</div>
<div class="line"><span class="lineno"> 533</span> <span class="keywordtype">int</span> a = q[1], b = q[2];</div>
<div class="line"><span class="lineno"> 534</span> code_result.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(hld.query(a - 1, b - 1));</div>
<div class="line"><span class="lineno"> 535</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><span class="lineno"> 536</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><span class="lineno"> 537</span> }</div>
<div class="line"><span class="lineno"> 538</span> }</div>
<div class="line"><span class="lineno"> 539</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; static_cast&lt;int&gt;(expected_result.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>()); i++) {</div>
<div class="line"><span class="lineno"> 540</span> assert(expected_result[i] == code_result[i]);</div>
<div class="line"><span class="lineno"> 541</span> }</div>
<div class="line"><span class="lineno"> 542</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\nTest 1 passed!\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 543</span>}</div>
<div class="ttc" id="abasic_ostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a></div></div>
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html">range_queries::heavy_light_decomposition::HLD</a></div><div class="ttdoc">The Heavy-Light Decomposition class.</div><div class="ttdef"><b>Definition:</b> heavy_light_decomposition.cpp:336</div></div>
<div class="ttc" id="apush_back_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">std::vector::push_back</a></div><div class="ttdeci">T push_back(T... args)</div></div>
<div class="ttc" id="asize_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/size.html">std::vector::size</a></div><div class="ttdeci">T size(T... args)</div></div>
<div class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a></div></div>
<div class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt; int64_t &gt;</a></div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
@@ -301,44 +301,44 @@ Here is the call graph for this function:</div>
</table>
</div><div class="memdoc">
<p >Second test implementations </p><dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</span> {</div>
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"> 550</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Test 2:\n&quot;</span>;</div>
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"> 551</span> </div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span> <span class="comment">// Test details (Bamboo)</span></div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span> <span class="keywordtype">int</span> n = 10;</div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int64_t&gt;</a> node_values = {1, 8, 6, 8, 6, 2, 9, 2, 3, 2};</div>
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::vector&lt;int&gt;</a>&gt; edges = {</div>
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span> {10, 5}, {6, 2}, {10, 7}, {5, 2}, {3, 9}, {8, 3}, {1, 4}, {6, 4}, {8, 7}};</div>
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"> 557</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::vector&lt;int&gt;</a>&gt; queries = {</div>
<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"> 558</span> {2, 1, 10}, {2, 1, 6}, {1, 3, 4}, {2, 1, 9}, {1, 5, 3},</div>
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno"> 559</span> {1, 7, 8}, {2, 1, 4}, {2, 1, 8}, {1, 1, 4}, {1, 2, 7}};</div>
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"> 560</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a> expected_result = {27, 11, 45, 9, 34};</div>
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"> 561</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a> code_result;</div>
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno"> 562</span> </div>
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"> 563</span> <a class="code hl_class" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html">range_queries::heavy_light_decomposition::HLD&lt;int64_t&gt;</a> hld(n);</div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"> 564</span> hld.set_node_val(node_values);</div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"> 565</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; n - 1; i++) {</div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span> <span class="keywordtype">int</span> u = edges[i][0], v = edges[i][1];</div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"> 567</span> hld.add_edge(u - 1, v - 1);</div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"> 568</span> }</div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"> 569</span> hld.init();</div>
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"> 570</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;q : queries) {</div>
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"> 571</span> <span class="keywordtype">int</span> type = q[0];</div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"> 572</span> <span class="keywordflow">if</span> (type == 1) {</div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span> <span class="keywordtype">int</span> p = q[1], x = q[2];</div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span> hld.update(p - 1, x);</div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"> 575</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == 2) {</div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"> 576</span> <span class="keywordtype">int</span> a = q[1], b = q[2];</div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> code_result.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(hld.query(a - 1, b - 1));</div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span> }</div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"> 581</span> }</div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"> 582</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; static_cast&lt;int&gt;(expected_result.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>()); i++) {</div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"> 583</span> assert(expected_result[i] == code_result[i]);</div>
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"> 584</span> }</div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno"> 585</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\nTest2 passed!\n&quot;</span>;</div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"> 586</span>}</div>
<div class="fragment"><div class="line"><span class="lineno"> 549</span> {</div>
<div class="line"><span class="lineno"> 550</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Test 2:\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 551</span> </div>
<div class="line"><span class="lineno"> 552</span> <span class="comment">// Test details (Bamboo)</span></div>
<div class="line"><span class="lineno"> 553</span> <span class="keywordtype">int</span> n = 10;</div>
<div class="line"><span class="lineno"> 554</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int64_t&gt;</a> node_values = {1, 8, 6, 8, 6, 2, 9, 2, 3, 2};</div>
<div class="line"><span class="lineno"> 555</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::vector&lt;int&gt;</a>&gt; edges = {</div>
<div class="line"><span class="lineno"> 556</span> {10, 5}, {6, 2}, {10, 7}, {5, 2}, {3, 9}, {8, 3}, {1, 4}, {6, 4}, {8, 7}};</div>
<div class="line"><span class="lineno"> 557</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::vector&lt;int&gt;</a>&gt; queries = {</div>
<div class="line"><span class="lineno"> 558</span> {2, 1, 10}, {2, 1, 6}, {1, 3, 4}, {2, 1, 9}, {1, 5, 3},</div>
<div class="line"><span class="lineno"> 559</span> {1, 7, 8}, {2, 1, 4}, {2, 1, 8}, {1, 1, 4}, {1, 2, 7}};</div>
<div class="line"><span class="lineno"> 560</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a> expected_result = {27, 11, 45, 9, 34};</div>
<div class="line"><span class="lineno"> 561</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a> code_result;</div>
<div class="line"><span class="lineno"> 562</span> </div>
<div class="line"><span class="lineno"> 563</span> <a class="code hl_class" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html">range_queries::heavy_light_decomposition::HLD&lt;int64_t&gt;</a> hld(n);</div>
<div class="line"><span class="lineno"> 564</span> hld.set_node_val(node_values);</div>
<div class="line"><span class="lineno"> 565</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; n - 1; i++) {</div>
<div class="line"><span class="lineno"> 566</span> <span class="keywordtype">int</span> u = edges[i][0], v = edges[i][1];</div>
<div class="line"><span class="lineno"> 567</span> hld.add_edge(u - 1, v - 1);</div>
<div class="line"><span class="lineno"> 568</span> }</div>
<div class="line"><span class="lineno"> 569</span> hld.init();</div>
<div class="line"><span class="lineno"> 570</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;q : queries) {</div>
<div class="line"><span class="lineno"> 571</span> <span class="keywordtype">int</span> type = q[0];</div>
<div class="line"><span class="lineno"> 572</span> <span class="keywordflow">if</span> (type == 1) {</div>
<div class="line"><span class="lineno"> 573</span> <span class="keywordtype">int</span> p = q[1], x = q[2];</div>
<div class="line"><span class="lineno"> 574</span> hld.update(p - 1, x);</div>
<div class="line"><span class="lineno"> 575</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == 2) {</div>
<div class="line"><span class="lineno"> 576</span> <span class="keywordtype">int</span> a = q[1], b = q[2];</div>
<div class="line"><span class="lineno"> 577</span> code_result.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(hld.query(a - 1, b - 1));</div>
<div class="line"><span class="lineno"> 578</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><span class="lineno"> 579</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><span class="lineno"> 580</span> }</div>
<div class="line"><span class="lineno"> 581</span> }</div>
<div class="line"><span class="lineno"> 582</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; static_cast&lt;int&gt;(expected_result.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>()); i++) {</div>
<div class="line"><span class="lineno"> 583</span> assert(expected_result[i] == code_result[i]);</div>
<div class="line"><span class="lineno"> 584</span> }</div>
<div class="line"><span class="lineno"> 585</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\nTest2 passed!\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 586</span>}</div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
@@ -371,44 +371,44 @@ Here is the call graph for this function:</div>
</table>
</div><div class="memdoc">
<p >Third test implementations </p><dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><a id="l00592" name="l00592"></a><span class="lineno"> 592</span> {</div>
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"> 593</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Test 3:\n&quot;</span>;</div>
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"> 594</span> </div>
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"> 595</span> <span class="comment">// Test details</span></div>
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"> 596</span> <span class="keywordtype">int</span> n = 8;</div>
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno"> 597</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int64_t&gt;</a> node_values = {1, 8, 6, 8, 6, 2, 9, 2};</div>
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"> 598</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::vector&lt;int&gt;</a>&gt; edges = {{1, 2}, {2, 3}, {3, 4}, {1, 5},</div>
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"> 599</span> {6, 3}, {7, 5}, {8, 7}};</div>
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"> 600</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::vector&lt;int&gt;</a>&gt; queries = {</div>
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"> 601</span> {2, 6, 8}, {2, 3, 6}, {1, 3, 4}, {2, 7, 1}, {1, 5, 3},</div>
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"> 602</span> {1, 7, 8}, {2, 6, 4}, {2, 7, 8}, {1, 1, 4}, {1, 2, 7}};</div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"> 603</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a> expected_result = {34, 8, 16, 14, 10};</div>
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a> code_result;</div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"> 605</span> </div>
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"> 606</span> <a class="code hl_class" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html">range_queries::heavy_light_decomposition::HLD&lt;int64_t&gt;</a> hld(n);</div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"> 607</span> hld.set_node_val(node_values);</div>
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno"> 608</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; n - 1; i++) {</div>
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"> 609</span> <span class="keywordtype">int</span> u = edges[i][0], v = edges[i][1];</div>
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno"> 610</span> hld.add_edge(u - 1, v - 1);</div>
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno"> 611</span> }</div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno"> 612</span> hld.init();</div>
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno"> 613</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;q : queries) {</div>
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno"> 614</span> <span class="keywordtype">int</span> type = q[0];</div>
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno"> 615</span> <span class="keywordflow">if</span> (type == 1) {</div>
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno"> 616</span> <span class="keywordtype">int</span> p = q[1], x = q[2];</div>
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno"> 617</span> hld.update(p - 1, x);</div>
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"> 618</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == 2) {</div>
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno"> 619</span> <span class="keywordtype">int</span> a = q[1], b = q[2];</div>
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"> 620</span> code_result.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(hld.query(a - 1, b - 1));</div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"> 621</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"> 622</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span> }</div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"> 624</span> }</div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"> 625</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; static_cast&lt;int&gt;(expected_result.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>()); i++) {</div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"> 626</span> assert(expected_result[i] == code_result[i]);</div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"> 627</span> }</div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"> 628</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\nTest3 passed!\n&quot;</span>;</div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"> 629</span>}</div>
<div class="fragment"><div class="line"><span class="lineno"> 592</span> {</div>
<div class="line"><span class="lineno"> 593</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Test 3:\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 594</span> </div>
<div class="line"><span class="lineno"> 595</span> <span class="comment">// Test details</span></div>
<div class="line"><span class="lineno"> 596</span> <span class="keywordtype">int</span> n = 8;</div>
<div class="line"><span class="lineno"> 597</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int64_t&gt;</a> node_values = {1, 8, 6, 8, 6, 2, 9, 2};</div>
<div class="line"><span class="lineno"> 598</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::vector&lt;int&gt;</a>&gt; edges = {{1, 2}, {2, 3}, {3, 4}, {1, 5},</div>
<div class="line"><span class="lineno"> 599</span> {6, 3}, {7, 5}, {8, 7}};</div>
<div class="line"><span class="lineno"> 600</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::vector&lt;int&gt;</a>&gt; queries = {</div>
<div class="line"><span class="lineno"> 601</span> {2, 6, 8}, {2, 3, 6}, {1, 3, 4}, {2, 7, 1}, {1, 5, 3},</div>
<div class="line"><span class="lineno"> 602</span> {1, 7, 8}, {2, 6, 4}, {2, 7, 8}, {1, 1, 4}, {1, 2, 7}};</div>
<div class="line"><span class="lineno"> 603</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a> expected_result = {34, 8, 16, 14, 10};</div>
<div class="line"><span class="lineno"> 604</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a> code_result;</div>
<div class="line"><span class="lineno"> 605</span> </div>
<div class="line"><span class="lineno"> 606</span> <a class="code hl_class" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html">range_queries::heavy_light_decomposition::HLD&lt;int64_t&gt;</a> hld(n);</div>
<div class="line"><span class="lineno"> 607</span> hld.set_node_val(node_values);</div>
<div class="line"><span class="lineno"> 608</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; n - 1; i++) {</div>
<div class="line"><span class="lineno"> 609</span> <span class="keywordtype">int</span> u = edges[i][0], v = edges[i][1];</div>
<div class="line"><span class="lineno"> 610</span> hld.add_edge(u - 1, v - 1);</div>
<div class="line"><span class="lineno"> 611</span> }</div>
<div class="line"><span class="lineno"> 612</span> hld.init();</div>
<div class="line"><span class="lineno"> 613</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;q : queries) {</div>
<div class="line"><span class="lineno"> 614</span> <span class="keywordtype">int</span> type = q[0];</div>
<div class="line"><span class="lineno"> 615</span> <span class="keywordflow">if</span> (type == 1) {</div>
<div class="line"><span class="lineno"> 616</span> <span class="keywordtype">int</span> p = q[1], x = q[2];</div>
<div class="line"><span class="lineno"> 617</span> hld.update(p - 1, x);</div>
<div class="line"><span class="lineno"> 618</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == 2) {</div>
<div class="line"><span class="lineno"> 619</span> <span class="keywordtype">int</span> a = q[1], b = q[2];</div>
<div class="line"><span class="lineno"> 620</span> code_result.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(hld.query(a - 1, b - 1));</div>
<div class="line"><span class="lineno"> 621</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><span class="lineno"> 622</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><span class="lineno"> 623</span> }</div>
<div class="line"><span class="lineno"> 624</span> }</div>
<div class="line"><span class="lineno"> 625</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; static_cast&lt;int&gt;(expected_result.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>()); i++) {</div>
<div class="line"><span class="lineno"> 626</span> assert(expected_result[i] == code_result[i]);</div>
<div class="line"><span class="lineno"> 627</span> }</div>
<div class="line"><span class="lineno"> 628</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;\nTest3 passed!\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 629</span>}</div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
@@ -424,7 +424,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="../../dir_074119ce3a874b57120c49a0cc4bb5ad.html">range_queries</a></li><li class="navelem"><a class="el" href="../../d2/de9/heavy__light__decomposition_8cpp.html">heavy_light_decomposition.cpp</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.2 </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.3 </li>
</ul>
</div>
</body>

View File

@@ -1,22 +1,22 @@
<map id="test_1" name="test_1">
<area shape="rect" id="node1" title=" " alt="" coords="5,441,64,468"/>
<area shape="rect" id="node2" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a79ab4601c4a95c0902ac04e779e5f54d" title="Adds an undirected edge from node u to node v in the tree." alt="" coords="116,103,263,159"/>
<area shape="rect" id="node3" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" title="This function must be called after the tree adjacency list and node values are populated The function..." alt="" coords="116,360,263,416"/>
<area shape="rect" id="node11" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/push_back.html#" title=" " alt="" coords="112,441,267,468"/>
<area shape="rect" id="node12" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a4dfbf5d9df825eeb63b294c6849bdcab" title="This function returns the sum of node values in the simple path from from node_1 to node_2." alt="" coords="116,183,263,239"/>
<area shape="rect" id="node17" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a04cd96efaba147b19d3afc769b90ff70" title="Set the values for all the nodes." alt="" coords="116,551,263,607"/>
<area shape="rect" id="node18" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="330,608,446,635"/>
<area shape="rect" id="node19" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a9f1cb54ed09fde931bf3220d75ee4c57" title="This function updates the value at node with val." alt="" coords="116,640,263,696"/>
<area shape="rect" id="node4" 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="509,255,656,311"/>
<area shape="rect" id="node5" 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="315,189,461,245"/>
<area shape="rect" id="node6" 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="315,293,461,349"/>
<area shape="rect" id="node7" 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="315,448,461,504"/>
<area shape="rect" id="node8" 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="315,528,461,584"/>
<area shape="rect" id="node9" 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="509,580,656,636"/>
<area shape="rect" id="node10" 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="509,476,656,532"/>
<area shape="rect" id="node13" 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="315,85,461,141"/>
<area shape="rect" id="node15" 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="315,5,461,61"/>
<area shape="rect" id="node14" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/swap.html#" title=" " alt="" coords="543,100,622,127"/>
<area shape="rect" id="node16" 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="509,5,656,61"/>
<area shape="rect" id="node20" href="$d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c" title="Update the value at a node." alt="" coords="315,659,461,715"/>
<area shape="rect" id="node1" title=" " alt="" coords="5,420,64,447"/>
<area shape="rect" id="node2" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a79ab4601c4a95c0902ac04e779e5f54d" title="Adds an undirected edge from node u to node v in the tree." alt="" coords="112,5,259,61"/>
<area shape="rect" id="node3" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/push_back#" title=" " alt="" coords="307,16,461,43"/>
<area shape="rect" id="node4" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" title="This function must be called after the tree adjacency list and node values are populated The function..." alt="" coords="112,405,259,461"/>
<area shape="rect" id="node12" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a4dfbf5d9df825eeb63b294c6849bdcab" title="This function returns the sum of node values in the simple path from from node_1 to node_2." alt="" coords="112,147,259,203"/>
<area shape="rect" id="node17" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a04cd96efaba147b19d3afc769b90ff70" title="Set the values for all the nodes." alt="" coords="112,499,259,555"/>
<area shape="rect" id="node18" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size#" title=" " alt="" coords="326,669,442,696"/>
<area shape="rect" id="node19" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a9f1cb54ed09fde931bf3220d75ee4c57" title="This function updates the value at node with val." alt="" coords="112,707,259,763"/>
<area shape="rect" id="node5" 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="509,212,656,268"/>
<area shape="rect" id="node6" 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="311,301,457,357"/>
<area shape="rect" id="node7" 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="311,405,457,461"/>
<area shape="rect" id="node8" 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="311,589,457,645"/>
<area shape="rect" id="node9" 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="311,485,457,541"/>
<area shape="rect" id="node10" 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="509,537,656,593"/>
<area shape="rect" id="node11" 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="509,433,656,489"/>
<area shape="rect" id="node13" 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="311,147,457,203"/>
<area shape="rect" id="node15" 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="311,67,457,123"/>
<area shape="rect" id="node14" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/swap#" title=" " alt="" coords="543,161,622,188"/>
<area shape="rect" id="node16" 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="509,67,656,123"/>
<area shape="rect" id="node20" href="$d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c" title="Update the value at a node." alt="" coords="311,720,457,776"/>
</map>

View File

@@ -1 +1 @@
af4357ba98660c282d9d8f9c3798b544
59b8236a6360dd778cc6328cfdff20de

View File

@@ -4,7 +4,7 @@
<!-- Generated by graphviz version 2.50.0 (20211204.2007)
-->
<!-- Title: test_1 Pages: 1 -->
<!--zoomable 540 -->
<!--zoomable 586 -->
<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[
.edge:hover path { stroke: red; }
@@ -47,20 +47,20 @@ if (edges && edges.length) {
<script type="text/javascript">
var viewWidth = 496;
var viewHeight = 540;
var viewHeight = 586;
var sectionId = 'dynsection-2';
</script>
<script xlink:href="../../svgpan.js"/>
<svg id="graph" class="graph">
<g id="viewport">
<title>test_1</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-536 492,-536 492,4 -4,4"/>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-582 492,-582 492,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title=" ">
<polygon fill="#bfbfbf" stroke="black" points="0,-185.5 0,-204.5 44,-204.5 44,-185.5 0,-185.5"/>
<text text-anchor="middle" x="22" y="-192.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_1</text>
<polygon fill="#bfbfbf" stroke="black" points="0,-247.5 0,-266.5 44,-266.5 44,-247.5 0,-247.5"/>
<text text-anchor="middle" x="22" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_1</text>
</a>
</g>
</g>
@@ -68,320 +68,326 @@ var sectionId = 'dynsection-2';
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a79ab4601c4a95c0902ac04e779e5f54d" target="_top" xlink:title="Adds an undirected edge from node u to node v in the tree.">
<polygon fill="white" stroke="black" points="83,-417.5 83,-458.5 193,-458.5 193,-417.5 83,-417.5"/>
<text text-anchor="start" x="91" y="-446.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-435.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-424.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::add_edge</text>
<polygon fill="white" stroke="black" points="80,-536.5 80,-577.5 190,-577.5 190,-536.5 80,-536.5"/>
<text text-anchor="start" x="88" y="-565.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-554.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-543.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::add_edge</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M22.97,-204.69C23.34,-237.16 28.64,-343.69 80,-408 80.7,-408.87 81.43,-409.73 82.19,-410.55"/>
<polygon fill="midnightblue" stroke="midnightblue" points="79.96,-413.26 89.7,-417.43 84.69,-408.1 79.96,-413.26"/>
<path fill="none" stroke="midnightblue" d="M22.7,-266.51C21.99,-302.71 23.63,-434.06 80,-519 82.53,-522.81 85.58,-526.36 88.93,-529.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="86.81,-532.42 96.66,-536.34 91.41,-527.14 86.81,-532.42"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" 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="black" points="83,-224.5 83,-265.5 193,-265.5 193,-224.5 83,-224.5"/>
<text text-anchor="start" x="91" y="-253.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-231.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::init</text>
<g id="a_node3"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/push_back#" xlink:title=" ">
<polygon fill="white" stroke="black" points="226,-550.5 226,-569.5 342,-569.5 342,-550.5 226,-550.5"/>
<text text-anchor="middle" x="284" y="-557.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::push_back</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<g id="edge16" class="edge">
<title>Node1&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M44.18,-204.29C54.54,-208.83 67.56,-214.54 80.54,-220.24"/>
<polygon fill="midnightblue" stroke="midnightblue" points="79.38,-223.55 89.95,-224.36 82.2,-217.14 79.38,-223.55"/>
<path fill="none" stroke="midnightblue" d="M22.58,-266.9C21.66,-301.08 23.17,-415.55 80,-481 82.87,-484.31 221.89,-539.47 226,-541 231.57,-543.07 237.49,-545.16 243.33,-547.16"/>
<polygon fill="midnightblue" stroke="midnightblue" points="242.39,-550.54 252.99,-550.42 244.63,-543.91 242.39,-550.54"/>
</g>
<!-- Node11 -->
<g id="node11" class="node">
<title>Node11</title>
<g id="a_node11"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/push_back.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="80,-185.5 80,-204.5 196,-204.5 196,-185.5 80,-185.5"/>
<text text-anchor="middle" x="138" y="-192.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::push_back</text>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" 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="black" points="80,-236.5 80,-277.5 190,-277.5 190,-236.5 80,-236.5"/>
<text text-anchor="start" x="88" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-243.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::init</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node11 -->
<g id="edge15" class="edge">
<title>Node1&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M44.18,-195C51.65,-195 60.5,-195 69.72,-195"/>
<polygon fill="midnightblue" stroke="midnightblue" points="69.83,-198.5 79.83,-195 69.83,-191.5 69.83,-198.5"/>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node1&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M44.14,-257C51.62,-257 60.48,-257 69.67,-257"/>
<polygon fill="midnightblue" stroke="midnightblue" points="69.72,-260.5 79.72,-257 69.72,-253.5 69.72,-260.5"/>
</g>
<!-- Node12 -->
<g id="node12" class="node">
<title>Node12</title>
<g id="a_node12"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a4dfbf5d9df825eeb63b294c6849bdcab" target="_top" xlink:title="This function returns the sum of node values in the simple path from from node_1 to node_2.">
<polygon fill="white" stroke="black" points="83,-357.5 83,-398.5 193,-398.5 193,-357.5 83,-357.5"/>
<text text-anchor="start" x="91" y="-386.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-375.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::query</text>
<polygon fill="white" stroke="black" points="80,-430.5 80,-471.5 190,-471.5 190,-430.5 80,-430.5"/>
<text text-anchor="start" x="88" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::query</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node12 -->
<g id="edge16" class="edge">
<g id="edge17" class="edge">
<title>Node1&#45;&gt;Node12</title>
<path fill="none" stroke="midnightblue" d="M28.97,-204.58C45.53,-231.17 92.55,-306.65 118.77,-348.74"/>
<polygon fill="midnightblue" stroke="midnightblue" points="115.93,-350.8 124.19,-357.43 121.87,-347.09 115.93,-350.8"/>
<path fill="none" stroke="midnightblue" d="M28.5,-266.62C44.51,-294.6 91.54,-376.78 117.06,-421.39"/>
<polygon fill="midnightblue" stroke="midnightblue" points="114.15,-423.36 122.16,-430.3 120.23,-419.88 114.15,-423.36"/>
</g>
<!-- Node17 -->
<g id="node17" class="node">
<title>Node17</title>
<g id="a_node17"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a04cd96efaba147b19d3afc769b90ff70" target="_top" xlink:title="Set the values for all the nodes.">
<polygon fill="white" stroke="black" points="83,-81.5 83,-122.5 193,-122.5 193,-81.5 83,-81.5"/>
<text text-anchor="start" x="91" y="-110.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-99.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::set_node_val</text>
<polygon fill="white" stroke="black" points="80,-166.5 80,-207.5 190,-207.5 190,-166.5 80,-166.5"/>
<text text-anchor="start" x="88" y="-195.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::set_node_val</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node17 -->
<g id="edge22" class="edge">
<g id="edge23" class="edge">
<title>Node1&#45;&gt;Node17</title>
<path fill="none" stroke="midnightblue" d="M32.26,-185.34C43.2,-174.15 62.18,-155.39 80,-141 85.27,-136.75 90.98,-132.48 96.69,-128.4"/>
<polygon fill="midnightblue" stroke="midnightblue" points="98.81,-131.19 105,-122.59 94.8,-125.45 98.81,-131.19"/>
<path fill="none" stroke="midnightblue" d="M38.43,-247.27C52.49,-238.41 73.87,-224.92 92.85,-212.95"/>
<polygon fill="midnightblue" stroke="midnightblue" points="94.78,-215.87 101.37,-207.58 91.05,-209.95 94.78,-215.87"/>
</g>
<!-- Node18 -->
<g id="node18" class="node">
<title>Node18</title>
<g id="a_node18"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="243.5,-60.5 243.5,-79.5 330.5,-79.5 330.5,-60.5 243.5,-60.5"/>
<text text-anchor="middle" x="287" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
<g id="a_node18"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size#" xlink:title=" ">
<polygon fill="white" stroke="black" points="240.5,-60.5 240.5,-79.5 327.5,-79.5 327.5,-60.5 240.5,-60.5"/>
<text text-anchor="middle" x="284" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node18 -->
<g id="edge24" class="edge">
<g id="edge25" class="edge">
<title>Node1&#45;&gt;Node18</title>
<path fill="none" stroke="midnightblue" d="M44.28,-187.94C87.61,-173.47 183.11,-141.04 196,-132 216.41,-117.69 211.51,-103.2 232,-89 234.74,-87.1 237.68,-85.38 240.73,-83.81"/>
<polygon fill="midnightblue" stroke="midnightblue" points="242.44,-86.88 250.11,-79.57 239.56,-80.5 242.44,-86.88"/>
<path fill="none" stroke="midnightblue" d="M26.18,-247.47C33.08,-228.06 51.19,-183.53 80,-157 122.74,-117.64 186.01,-94.39 230.53,-81.97"/>
<polygon fill="midnightblue" stroke="midnightblue" points="231.55,-85.32 240.29,-79.34 229.73,-78.56 231.55,-85.32"/>
</g>
<!-- Node19 -->
<g id="node19" class="node">
<title>Node19</title>
<g id="a_node19"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a9f1cb54ed09fde931bf3220d75ee4c57" target="_top" xlink:title="This function updates the value at node with val.">
<polygon fill="white" stroke="black" points="83,-14.5 83,-55.5 193,-55.5 193,-14.5 83,-14.5"/>
<text text-anchor="start" x="91" y="-43.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::update</text>
<polygon fill="white" stroke="black" points="80,-10.5 80,-51.5 190,-51.5 190,-10.5 80,-10.5"/>
<text text-anchor="start" x="88" y="-39.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-28.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::update</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node19 -->
<g id="edge25" class="edge">
<g id="edge26" class="edge">
<title>Node1&#45;&gt;Node19</title>
<path fill="none" stroke="midnightblue" d="M25.47,-185.36C31.54,-163.18 49,-107.74 80,-72 83.17,-68.35 86.78,-64.92 90.62,-61.73"/>
<polygon fill="midnightblue" stroke="midnightblue" points="92.9,-64.39 98.73,-55.54 88.66,-58.83 92.9,-64.39"/>
<path fill="none" stroke="midnightblue" d="M25.62,-247.36C32.52,-222.73 52.58,-155.85 80,-105 88.48,-89.27 99.93,-73.09 110.09,-59.88"/>
<polygon fill="midnightblue" stroke="midnightblue" points="113.12,-61.7 116.55,-51.67 107.62,-57.37 113.12,-61.7"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><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="black" points="378,-303.5 378,-344.5 488,-344.5 488,-303.5 378,-303.5"/>
<text text-anchor="start" x="386" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::combine</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node3&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M193.09,-243.38C234.88,-243.77 293.58,-247.91 342,-265 362.7,-272.31 383.37,-285.34 399.66,-297.3"/>
<polygon fill="midnightblue" stroke="midnightblue" points="397.67,-300.18 407.76,-303.42 401.89,-294.6 397.67,-300.18"/>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<title>Node2&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M190.32,-558.11C198.58,-558.28 207.18,-558.45 215.67,-558.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="215.88,-562.13 225.95,-558.84 216.02,-555.13 215.88,-562.13"/>
</g>
<!-- Node5 -->
<g id="node5" class="node">
<title>Node5</title>
<g id="a_node5"><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="black" points="232,-352.5 232,-393.5 342,-393.5 342,-352.5 232,-352.5"/>
<text text-anchor="start" x="240" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-359.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_hc</text>
<g id="a_node5"><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="black" points="378,-381.5 378,-422.5 488,-422.5 488,-381.5 378,-381.5"/>
<text text-anchor="start" x="386" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-399.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-388.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::combine</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node5 -->
<!-- Node4&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<title>Node3&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M155.26,-265.52C172.7,-286.66 201.97,-319.72 232,-343 233.59,-344.23 235.24,-345.44 236.92,-346.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="235.33,-349.78 245.61,-352.37 239.19,-343.94 235.33,-349.78"/>
<title>Node4&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M144.2,-277.84C156.9,-306.98 184.27,-359.04 226,-383 268.82,-407.59 325.06,-411.25 367.95,-409.36"/>
<polygon fill="midnightblue" stroke="midnightblue" points="368.21,-412.86 378,-408.81 367.82,-405.87 368.21,-412.86"/>
</g>
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><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="black" points="232,-274.5 232,-315.5 342,-315.5 342,-274.5 232,-274.5"/>
<text text-anchor="start" x="240" y="-303.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-292.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-281.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_labels</text>
<g id="a_node6"><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="black" points="229,-314.5 229,-355.5 339,-355.5 339,-314.5 229,-314.5"/>
<text text-anchor="start" x="237" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_hc</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node6 -->
<g id="edge6" class="edge">
<title>Node3&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M193.32,-263.48C202.77,-266.69 212.67,-270.06 222.34,-273.35"/>
<polygon fill="midnightblue" stroke="midnightblue" points="221.31,-276.69 231.9,-276.6 223.56,-270.07 221.31,-276.69"/>
<!-- Node4&#45;&gt;Node6 -->
<g id="edge5" class="edge">
<title>Node4&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M174.52,-277.6C190.44,-286.1 209.1,-296.05 226,-305 228.87,-306.52 231.81,-308.08 234.79,-309.65"/>
<polygon fill="midnightblue" stroke="midnightblue" points="233.26,-312.8 243.74,-314.37 236.53,-306.61 233.26,-312.8"/>
</g>
<!-- Node7 -->
<g id="node7" class="node">
<title>Node7</title>
<g id="a_node7"><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="black" points="232,-158.5 232,-199.5 342,-199.5 342,-158.5 232,-158.5"/>
<text text-anchor="start" x="240" y="-187.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-176.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-165.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_par</text>
<g id="a_node7"><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="black" points="229,-236.5 229,-277.5 339,-277.5 339,-236.5 229,-236.5"/>
<text text-anchor="start" x="237" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-243.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_labels</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node7 -->
<g id="edge8" class="edge">
<title>Node3&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M184.71,-224.48C199.36,-217.9 215.75,-210.54 231,-203.69"/>
<polygon fill="midnightblue" stroke="midnightblue" points="232.63,-206.8 240.32,-199.51 229.77,-200.41 232.63,-206.8"/>
<!-- Node4&#45;&gt;Node7 -->
<g id="edge7" class="edge">
<title>Node4&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M190.32,-257C199.57,-257 209.25,-257 218.73,-257"/>
<polygon fill="midnightblue" stroke="midnightblue" points="218.9,-260.5 228.9,-257 218.9,-253.5 218.9,-260.5"/>
</g>
<!-- Node8 -->
<g id="node8" class="node">
<title>Node8</title>
<g id="a_node8"><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="black" points="232,-98.5 232,-139.5 342,-139.5 342,-98.5 232,-98.5"/>
<text text-anchor="start" x="240" y="-127.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-116.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-105.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::init</text>
<g id="a_node8"><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="black" points="229,-98.5 229,-139.5 339,-139.5 339,-98.5 229,-98.5"/>
<text text-anchor="start" x="237" y="-127.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-116.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-105.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_par</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node8 -->
<g id="edge10" class="edge">
<title>Node3&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M183.14,-224.4C187.76,-221.28 192.16,-217.81 196,-214 219.44,-190.74 208.66,-172.37 232,-149 233.07,-147.93 234.18,-146.89 235.33,-145.88"/>
<polygon fill="midnightblue" stroke="midnightblue" points="237.65,-148.5 243.37,-139.59 233.34,-142.99 237.65,-148.5"/>
</g>
<!-- Node5&#45;&gt;Node5 -->
<g id="edge5" class="edge">
<title>Node5&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M260.17,-393.86C257.24,-403.54 266.18,-412 287,-412 300.01,-412 308.38,-408.7 312.12,-403.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.59,-404.31 313.83,-393.86 308.69,-403.13 315.59,-404.31"/>
</g>
<!-- Node6&#45;&gt;Node6 -->
<g id="edge7" class="edge">
<title>Node6&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M260.17,-315.86C257.24,-325.54 266.18,-334 287,-334 300.01,-334 308.38,-330.7 312.12,-325.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.59,-326.31 313.83,-315.86 308.69,-325.13 315.59,-326.31"/>
</g>
<!-- Node7&#45;&gt;Node7 -->
<!-- Node4&#45;&gt;Node8 -->
<g id="edge9" class="edge">
<title>Node7&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M260.17,-199.86C257.24,-209.54 266.18,-218 287,-218 300.01,-218 308.38,-214.7 312.12,-209.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.59,-210.31 313.83,-199.86 308.69,-209.13 315.59,-210.31"/>
<title>Node4&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M167.33,-236.33C175.13,-230.52 183.2,-223.89 190,-217 209.23,-197.51 207.39,-187.08 226,-167 232.59,-159.89 240.2,-152.83 247.67,-146.41"/>
<polygon fill="midnightblue" stroke="midnightblue" points="250.26,-148.81 255.67,-139.71 245.76,-143.44 250.26,-148.81"/>
</g>
<!-- Node9 -->
<g id="node9" class="node">
<title>Node9</title>
<g id="a_node9"><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="black" points="378,-59.5 378,-100.5 488,-100.5 488,-59.5 378,-59.5"/>
<text text-anchor="start" x="386" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_lca</text>
<g id="a_node9"><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="black" points="229,-176.5 229,-217.5 339,-217.5 339,-176.5 229,-176.5"/>
<text text-anchor="start" x="237" y="-205.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-194.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-183.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::init</text>
</a>
</g>
</g>
<!-- Node8&#45;&gt;Node9 -->
<!-- Node4&#45;&gt;Node9 -->
<g id="edge11" class="edge">
<title>Node8&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M342.03,-104.37C350.5,-102.07 359.32,-99.69 367.98,-97.34"/>
<polygon fill="midnightblue" stroke="midnightblue" points="368.93,-100.71 377.67,-94.72 367.1,-93.95 368.93,-100.71"/>
<title>Node4&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M186.59,-236.35C198.25,-231.59 210.77,-226.48 222.8,-221.57"/>
<polygon fill="midnightblue" stroke="midnightblue" points="224.38,-224.71 232.32,-217.69 221.74,-218.23 224.38,-224.71"/>
</g>
<!-- Node6&#45;&gt;Node6 -->
<g id="edge6" class="edge">
<title>Node6&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M256.8,-355.86C253.83,-365.54 262.9,-374 284,-374 297.19,-374 305.68,-370.7 309.46,-365.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="312.93,-366.32 311.2,-355.86 306.04,-365.12 312.93,-366.32"/>
</g>
<!-- Node7&#45;&gt;Node7 -->
<g id="edge8" class="edge">
<title>Node7&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M256.8,-277.86C253.83,-287.54 262.9,-296 284,-296 297.19,-296 305.68,-292.7 309.46,-287.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="312.93,-288.32 311.2,-277.86 306.04,-287.12 312.93,-288.32"/>
</g>
<!-- Node8&#45;&gt;Node8 -->
<g id="edge10" class="edge">
<title>Node8&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M256.8,-139.86C253.83,-149.54 262.9,-158 284,-158 297.19,-158 305.68,-154.7 309.46,-149.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="312.93,-150.32 311.2,-139.86 306.04,-149.12 312.93,-150.32"/>
</g>
<!-- Node10 -->
<g id="node10" class="node">
<title>Node10</title>
<g id="a_node10"><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_node10"><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="black" points="378,-137.5 378,-178.5 488,-178.5 488,-137.5 378,-137.5"/>
<text text-anchor="start" x="386" y="-166.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-155.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-144.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_size</text>
<text text-anchor="middle" x="433" y="-144.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_lca</text>
</a>
</g>
</g>
<!-- Node8&#45;&gt;Node10 -->
<g id="edge13" class="edge">
<title>Node8&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M342.03,-133.63C350.5,-135.93 359.32,-138.31 367.98,-140.66"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.1,-144.05 377.67,-143.28 368.93,-137.29 367.1,-144.05"/>
</g>
<!-- Node9&#45;&gt;Node9 -->
<!-- Node9&#45;&gt;Node10 -->
<g id="edge12" class="edge">
<title>Node9&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M406.17,-100.86C403.24,-110.54 412.18,-119 433,-119 446.01,-119 454.38,-115.7 458.12,-110.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.59,-111.31 459.83,-100.86 454.69,-110.13 461.59,-111.31"/>
<title>Node9&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M339.32,-182.59C348.67,-180.11 358.46,-177.51 368.03,-174.97"/>
<polygon fill="midnightblue" stroke="midnightblue" points="369.14,-178.3 377.9,-172.35 367.34,-171.53 369.14,-178.3"/>
</g>
<!-- Node11 -->
<g id="node11" class="node">
<title>Node11</title>
<g id="a_node11"><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="black" points="378,-215.5 378,-256.5 488,-256.5 488,-215.5 378,-215.5"/>
<text text-anchor="start" x="386" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_size</text>
</a>
</g>
</g>
<!-- Node9&#45;&gt;Node11 -->
<g id="edge14" class="edge">
<title>Node9&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M339.32,-211.41C348.67,-213.89 358.46,-216.49 368.03,-219.03"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.34,-222.47 377.9,-221.65 369.14,-215.7 367.34,-222.47"/>
</g>
<!-- Node10&#45;&gt;Node10 -->
<g id="edge14" class="edge">
<g id="edge13" class="edge">
<title>Node10&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M406.17,-178.86C403.24,-188.54 412.18,-197 433,-197 446.01,-197 454.38,-193.7 458.12,-188.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.59,-189.31 459.83,-178.86 454.69,-188.13 461.59,-189.31"/>
<path fill="none" stroke="midnightblue" d="M405.8,-178.86C402.83,-188.54 411.9,-197 433,-197 446.19,-197 454.68,-193.7 458.46,-188.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.93,-189.32 460.2,-178.86 455.04,-188.12 461.93,-189.32"/>
</g>
<!-- Node11&#45;&gt;Node11 -->
<g id="edge15" class="edge">
<title>Node11&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M405.8,-256.86C402.83,-266.54 411.9,-275 433,-275 446.19,-275 454.68,-271.7 458.46,-266.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.93,-267.32 460.2,-256.86 455.04,-266.12 461.93,-267.32"/>
</g>
<!-- Node13 -->
<g id="node13" class="node">
<title>Node13</title>
<g id="a_node13"><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="black" points="232,-430.5 232,-471.5 342,-471.5 342,-430.5 232,-430.5"/>
<text text-anchor="start" x="240" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::chain_query</text>
<polygon fill="white" stroke="black" points="229,-430.5 229,-471.5 339,-471.5 339,-430.5 229,-430.5"/>
<text text-anchor="start" x="237" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::chain_query</text>
</a>
</g>
</g>
<!-- Node12&#45;&gt;Node13 -->
<g id="edge17" class="edge">
<g id="edge18" class="edge">
<title>Node12&#45;&gt;Node13</title>
<path fill="none" stroke="midnightblue" d="M180.34,-398.53C197.48,-407.04 217.52,-416.99 235.52,-425.93"/>
<polygon fill="midnightblue" stroke="midnightblue" points="234.2,-429.19 244.72,-430.5 237.32,-422.92 234.2,-429.19"/>
<path fill="none" stroke="midnightblue" d="M190.32,-451C199.57,-451 209.25,-451 218.73,-451"/>
<polygon fill="midnightblue" stroke="midnightblue" points="218.9,-454.5 228.9,-451 218.9,-447.5 218.9,-454.5"/>
</g>
<!-- Node15 -->
<g id="node15" class="node">
<title>Node15</title>
<g id="a_node15"><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="black" points="232,-490.5 232,-531.5 342,-531.5 342,-490.5 232,-490.5"/>
<text text-anchor="start" x="240" y="-519.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-497.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lca</text>
<polygon fill="white" stroke="black" points="229,-490.5 229,-531.5 339,-531.5 339,-490.5 229,-490.5"/>
<text text-anchor="start" x="237" y="-519.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-497.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lca</text>
</a>
</g>
</g>
<!-- Node12&#45;&gt;Node15 -->
<g id="edge20" class="edge">
<g id="edge21" class="edge">
<title>Node12&#45;&gt;Node15</title>
<path fill="none" stroke="midnightblue" d="M184.75,-398.59C188.81,-401.42 192.64,-404.56 196,-408 221.24,-433.91 207.05,-454.8 232,-481 232.92,-481.96 233.87,-482.9 234.85,-483.81"/>
<polygon fill="midnightblue" stroke="midnightblue" points="232.97,-486.79 242.93,-490.38 237.38,-481.36 232.97,-486.79"/>
<path fill="none" stroke="midnightblue" d="M186.59,-471.65C198.25,-476.41 210.77,-481.52 222.8,-486.43"/>
<polygon fill="midnightblue" stroke="midnightblue" points="221.74,-489.77 232.32,-490.31 224.38,-483.29 221.74,-489.77"/>
</g>
<!-- Node13&#45;&gt;Node4 -->
<g id="edge18" class="edge">
<title>Node13&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M328.43,-430.41C333.15,-427.47 337.78,-424.31 342,-421 367.69,-400.85 392.6,-373.18 409.67,-352.54"/>
<polygon fill="midnightblue" stroke="midnightblue" points="412.44,-354.69 416.04,-344.73 407.01,-350.27 412.44,-354.69"/>
<!-- Node13&#45;&gt;Node5 -->
<g id="edge19" class="edge">
<title>Node13&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M339.32,-432.89C348.77,-429.74 358.67,-426.44 368.34,-423.22"/>
<polygon fill="midnightblue" stroke="midnightblue" points="369.52,-426.51 377.9,-420.03 367.31,-419.87 369.52,-426.51"/>
</g>
<!-- Node14 -->
<g id="node14" class="node">
<title>Node14</title>
<g id="a_node14"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap.html#" xlink:title=" ">
<g id="a_node14"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap#" xlink:title=" ">
<polygon fill="white" stroke="black" points="403.5,-441.5 403.5,-460.5 462.5,-460.5 462.5,-441.5 403.5,-441.5"/>
<text text-anchor="middle" x="433" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::swap</text>
</a>
</g>
</g>
<!-- Node13&#45;&gt;Node14 -->
<g id="edge19" class="edge">
<g id="edge20" class="edge">
<title>Node13&#45;&gt;Node14</title>
<path fill="none" stroke="midnightblue" d="M342.03,-451C358.89,-451 377.15,-451 392.79,-451"/>
<polygon fill="midnightblue" stroke="midnightblue" points="393.15,-454.5 403.15,-451 393.15,-447.5 393.15,-454.5"/>
<path fill="none" stroke="midnightblue" d="M339.32,-451C357.17,-451 376.63,-451 393.1,-451"/>
<polygon fill="midnightblue" stroke="midnightblue" points="393.44,-454.5 403.44,-451 393.44,-447.5 393.44,-454.5"/>
</g>
<!-- Node16 -->
<g id="node16" class="node">
@@ -395,33 +401,33 @@ var sectionId = 'dynsection-2';
</g>
</g>
<!-- Node15&#45;&gt;Node16 -->
<g id="edge21" class="edge">
<g id="edge22" class="edge">
<title>Node15&#45;&gt;Node16</title>
<path fill="none" stroke="midnightblue" d="M342.03,-511C350.31,-511 358.94,-511 367.42,-511"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.67,-514.5 377.67,-511 367.67,-507.5 367.67,-514.5"/>
<path fill="none" stroke="midnightblue" d="M339.32,-511C348.57,-511 358.25,-511 367.73,-511"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.9,-514.5 377.9,-511 367.9,-507.5 367.9,-514.5"/>
</g>
<!-- Node17&#45;&gt;Node18 -->
<g id="edge23" class="edge">
<g id="edge24" class="edge">
<title>Node17&#45;&gt;Node18</title>
<path fill="none" stroke="midnightblue" d="M193.32,-90.18C206.48,-87.31 220.53,-84.25 233.61,-81.41"/>
<polygon fill="midnightblue" stroke="midnightblue" points="234.36,-84.82 243.38,-79.28 232.87,-77.98 234.36,-84.82"/>
<path fill="none" stroke="midnightblue" d="M157.53,-166.45C167.63,-156.56 179.68,-144.4 190,-133 206.95,-114.27 205.2,-103.34 226,-89 228.88,-87.02 231.98,-85.23 235.2,-83.61"/>
<polygon fill="midnightblue" stroke="midnightblue" points="236.74,-86.76 244.48,-79.52 233.92,-80.35 236.74,-86.76"/>
</g>
<!-- Node20 -->
<g id="node20" class="node">
<title>Node20</title>
<g id="a_node20"><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="black" points="232,-0.5 232,-41.5 342,-41.5 342,-0.5 232,-0.5"/>
<text text-anchor="start" x="240" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::update</text>
<polygon fill="white" stroke="black" points="229,-0.5 229,-41.5 339,-41.5 339,-0.5 229,-0.5"/>
<text text-anchor="start" x="237" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::update</text>
</a>
</g>
</g>
<!-- Node19&#45;&gt;Node20 -->
<g id="edge26" class="edge">
<g id="edge27" class="edge">
<title>Node19&#45;&gt;Node20</title>
<path fill="none" stroke="midnightblue" d="M193.32,-29.83C202.57,-28.95 212.25,-28.02 221.73,-27.12"/>
<polygon fill="midnightblue" stroke="midnightblue" points="222.28,-30.58 231.9,-26.15 221.62,-23.62 222.28,-30.58"/>
<path fill="none" stroke="midnightblue" d="M190.32,-27.3C199.57,-26.68 209.25,-26.02 218.73,-25.37"/>
<polygon fill="midnightblue" stroke="midnightblue" points="219.16,-28.85 228.9,-24.68 218.69,-21.87 219.16,-28.85"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -4,17 +4,17 @@
<!-- Generated by graphviz version 2.50.0 (20211204.2007)
-->
<!-- Title: test_1 Pages: 1 -->
<svg width="496pt" height="540pt"
viewBox="0.00 0.00 496.00 540.00" 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 536)">
<svg width="496pt" height="586pt"
viewBox="0.00 0.00 496.00 586.00" 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 582)">
<title>test_1</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-536 492,-536 492,4 -4,4"/>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-582 492,-582 492,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title=" ">
<polygon fill="#bfbfbf" stroke="black" points="0,-185.5 0,-204.5 44,-204.5 44,-185.5 0,-185.5"/>
<text text-anchor="middle" x="22" y="-192.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_1</text>
<polygon fill="#bfbfbf" stroke="black" points="0,-247.5 0,-266.5 44,-266.5 44,-247.5 0,-247.5"/>
<text text-anchor="middle" x="22" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_1</text>
</a>
</g>
</g>
@@ -22,320 +22,326 @@
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a79ab4601c4a95c0902ac04e779e5f54d" target="_top" xlink:title="Adds an undirected edge from node u to node v in the tree.">
<polygon fill="white" stroke="black" points="83,-417.5 83,-458.5 193,-458.5 193,-417.5 83,-417.5"/>
<text text-anchor="start" x="91" y="-446.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-435.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-424.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::add_edge</text>
<polygon fill="white" stroke="black" points="80,-536.5 80,-577.5 190,-577.5 190,-536.5 80,-536.5"/>
<text text-anchor="start" x="88" y="-565.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-554.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-543.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::add_edge</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M22.97,-204.69C23.34,-237.16 28.64,-343.69 80,-408 80.7,-408.87 81.43,-409.73 82.19,-410.55"/>
<polygon fill="midnightblue" stroke="midnightblue" points="79.96,-413.26 89.7,-417.43 84.69,-408.1 79.96,-413.26"/>
<path fill="none" stroke="midnightblue" d="M22.7,-266.51C21.99,-302.71 23.63,-434.06 80,-519 82.53,-522.81 85.58,-526.36 88.93,-529.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="86.81,-532.42 96.66,-536.34 91.41,-527.14 86.81,-532.42"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" 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="black" points="83,-224.5 83,-265.5 193,-265.5 193,-224.5 83,-224.5"/>
<text text-anchor="start" x="91" y="-253.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-231.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::init</text>
<g id="a_node3"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/push_back#" xlink:title=" ">
<polygon fill="white" stroke="black" points="226,-550.5 226,-569.5 342,-569.5 342,-550.5 226,-550.5"/>
<text text-anchor="middle" x="284" y="-557.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::push_back</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<g id="edge16" class="edge">
<title>Node1&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M44.18,-204.29C54.54,-208.83 67.56,-214.54 80.54,-220.24"/>
<polygon fill="midnightblue" stroke="midnightblue" points="79.38,-223.55 89.95,-224.36 82.2,-217.14 79.38,-223.55"/>
<path fill="none" stroke="midnightblue" d="M22.58,-266.9C21.66,-301.08 23.17,-415.55 80,-481 82.87,-484.31 221.89,-539.47 226,-541 231.57,-543.07 237.49,-545.16 243.33,-547.16"/>
<polygon fill="midnightblue" stroke="midnightblue" points="242.39,-550.54 252.99,-550.42 244.63,-543.91 242.39,-550.54"/>
</g>
<!-- Node11 -->
<g id="node11" class="node">
<title>Node11</title>
<g id="a_node11"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/push_back.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="80,-185.5 80,-204.5 196,-204.5 196,-185.5 80,-185.5"/>
<text text-anchor="middle" x="138" y="-192.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::push_back</text>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" 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="black" points="80,-236.5 80,-277.5 190,-277.5 190,-236.5 80,-236.5"/>
<text text-anchor="start" x="88" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-243.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::init</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node11 -->
<g id="edge15" class="edge">
<title>Node1&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M44.18,-195C51.65,-195 60.5,-195 69.72,-195"/>
<polygon fill="midnightblue" stroke="midnightblue" points="69.83,-198.5 79.83,-195 69.83,-191.5 69.83,-198.5"/>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node1&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M44.14,-257C51.62,-257 60.48,-257 69.67,-257"/>
<polygon fill="midnightblue" stroke="midnightblue" points="69.72,-260.5 79.72,-257 69.72,-253.5 69.72,-260.5"/>
</g>
<!-- Node12 -->
<g id="node12" class="node">
<title>Node12</title>
<g id="a_node12"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a4dfbf5d9df825eeb63b294c6849bdcab" target="_top" xlink:title="This function returns the sum of node values in the simple path from from node_1 to node_2.">
<polygon fill="white" stroke="black" points="83,-357.5 83,-398.5 193,-398.5 193,-357.5 83,-357.5"/>
<text text-anchor="start" x="91" y="-386.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-375.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::query</text>
<polygon fill="white" stroke="black" points="80,-430.5 80,-471.5 190,-471.5 190,-430.5 80,-430.5"/>
<text text-anchor="start" x="88" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::query</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node12 -->
<g id="edge16" class="edge">
<g id="edge17" class="edge">
<title>Node1&#45;&gt;Node12</title>
<path fill="none" stroke="midnightblue" d="M28.97,-204.58C45.53,-231.17 92.55,-306.65 118.77,-348.74"/>
<polygon fill="midnightblue" stroke="midnightblue" points="115.93,-350.8 124.19,-357.43 121.87,-347.09 115.93,-350.8"/>
<path fill="none" stroke="midnightblue" d="M28.5,-266.62C44.51,-294.6 91.54,-376.78 117.06,-421.39"/>
<polygon fill="midnightblue" stroke="midnightblue" points="114.15,-423.36 122.16,-430.3 120.23,-419.88 114.15,-423.36"/>
</g>
<!-- Node17 -->
<g id="node17" class="node">
<title>Node17</title>
<g id="a_node17"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a04cd96efaba147b19d3afc769b90ff70" target="_top" xlink:title="Set the values for all the nodes.">
<polygon fill="white" stroke="black" points="83,-81.5 83,-122.5 193,-122.5 193,-81.5 83,-81.5"/>
<text text-anchor="start" x="91" y="-110.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-99.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::set_node_val</text>
<polygon fill="white" stroke="black" points="80,-166.5 80,-207.5 190,-207.5 190,-166.5 80,-166.5"/>
<text text-anchor="start" x="88" y="-195.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::set_node_val</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node17 -->
<g id="edge22" class="edge">
<g id="edge23" class="edge">
<title>Node1&#45;&gt;Node17</title>
<path fill="none" stroke="midnightblue" d="M32.26,-185.34C43.2,-174.15 62.18,-155.39 80,-141 85.27,-136.75 90.98,-132.48 96.69,-128.4"/>
<polygon fill="midnightblue" stroke="midnightblue" points="98.81,-131.19 105,-122.59 94.8,-125.45 98.81,-131.19"/>
<path fill="none" stroke="midnightblue" d="M38.43,-247.27C52.49,-238.41 73.87,-224.92 92.85,-212.95"/>
<polygon fill="midnightblue" stroke="midnightblue" points="94.78,-215.87 101.37,-207.58 91.05,-209.95 94.78,-215.87"/>
</g>
<!-- Node18 -->
<g id="node18" class="node">
<title>Node18</title>
<g id="a_node18"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="243.5,-60.5 243.5,-79.5 330.5,-79.5 330.5,-60.5 243.5,-60.5"/>
<text text-anchor="middle" x="287" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
<g id="a_node18"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size#" xlink:title=" ">
<polygon fill="white" stroke="black" points="240.5,-60.5 240.5,-79.5 327.5,-79.5 327.5,-60.5 240.5,-60.5"/>
<text text-anchor="middle" x="284" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node18 -->
<g id="edge24" class="edge">
<g id="edge25" class="edge">
<title>Node1&#45;&gt;Node18</title>
<path fill="none" stroke="midnightblue" d="M44.28,-187.94C87.61,-173.47 183.11,-141.04 196,-132 216.41,-117.69 211.51,-103.2 232,-89 234.74,-87.1 237.68,-85.38 240.73,-83.81"/>
<polygon fill="midnightblue" stroke="midnightblue" points="242.44,-86.88 250.11,-79.57 239.56,-80.5 242.44,-86.88"/>
<path fill="none" stroke="midnightblue" d="M26.18,-247.47C33.08,-228.06 51.19,-183.53 80,-157 122.74,-117.64 186.01,-94.39 230.53,-81.97"/>
<polygon fill="midnightblue" stroke="midnightblue" points="231.55,-85.32 240.29,-79.34 229.73,-78.56 231.55,-85.32"/>
</g>
<!-- Node19 -->
<g id="node19" class="node">
<title>Node19</title>
<g id="a_node19"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a9f1cb54ed09fde931bf3220d75ee4c57" target="_top" xlink:title="This function updates the value at node with val.">
<polygon fill="white" stroke="black" points="83,-14.5 83,-55.5 193,-55.5 193,-14.5 83,-14.5"/>
<text text-anchor="start" x="91" y="-43.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::update</text>
<polygon fill="white" stroke="black" points="80,-10.5 80,-51.5 190,-51.5 190,-10.5 80,-10.5"/>
<text text-anchor="start" x="88" y="-39.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-28.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::update</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node19 -->
<g id="edge25" class="edge">
<g id="edge26" class="edge">
<title>Node1&#45;&gt;Node19</title>
<path fill="none" stroke="midnightblue" d="M25.47,-185.36C31.54,-163.18 49,-107.74 80,-72 83.17,-68.35 86.78,-64.92 90.62,-61.73"/>
<polygon fill="midnightblue" stroke="midnightblue" points="92.9,-64.39 98.73,-55.54 88.66,-58.83 92.9,-64.39"/>
<path fill="none" stroke="midnightblue" d="M25.62,-247.36C32.52,-222.73 52.58,-155.85 80,-105 88.48,-89.27 99.93,-73.09 110.09,-59.88"/>
<polygon fill="midnightblue" stroke="midnightblue" points="113.12,-61.7 116.55,-51.67 107.62,-57.37 113.12,-61.7"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><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="black" points="378,-303.5 378,-344.5 488,-344.5 488,-303.5 378,-303.5"/>
<text text-anchor="start" x="386" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::combine</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node3&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M193.09,-243.38C234.88,-243.77 293.58,-247.91 342,-265 362.7,-272.31 383.37,-285.34 399.66,-297.3"/>
<polygon fill="midnightblue" stroke="midnightblue" points="397.67,-300.18 407.76,-303.42 401.89,-294.6 397.67,-300.18"/>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<title>Node2&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M190.32,-558.11C198.58,-558.28 207.18,-558.45 215.67,-558.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="215.88,-562.13 225.95,-558.84 216.02,-555.13 215.88,-562.13"/>
</g>
<!-- Node5 -->
<g id="node5" class="node">
<title>Node5</title>
<g id="a_node5"><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="black" points="232,-352.5 232,-393.5 342,-393.5 342,-352.5 232,-352.5"/>
<text text-anchor="start" x="240" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-359.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_hc</text>
<g id="a_node5"><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="black" points="378,-381.5 378,-422.5 488,-422.5 488,-381.5 378,-381.5"/>
<text text-anchor="start" x="386" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-399.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-388.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::combine</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node5 -->
<!-- Node4&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<title>Node3&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M155.26,-265.52C172.7,-286.66 201.97,-319.72 232,-343 233.59,-344.23 235.24,-345.44 236.92,-346.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="235.33,-349.78 245.61,-352.37 239.19,-343.94 235.33,-349.78"/>
<title>Node4&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M144.2,-277.84C156.9,-306.98 184.27,-359.04 226,-383 268.82,-407.59 325.06,-411.25 367.95,-409.36"/>
<polygon fill="midnightblue" stroke="midnightblue" points="368.21,-412.86 378,-408.81 367.82,-405.87 368.21,-412.86"/>
</g>
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><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="black" points="232,-274.5 232,-315.5 342,-315.5 342,-274.5 232,-274.5"/>
<text text-anchor="start" x="240" y="-303.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-292.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-281.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_labels</text>
<g id="a_node6"><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="black" points="229,-314.5 229,-355.5 339,-355.5 339,-314.5 229,-314.5"/>
<text text-anchor="start" x="237" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_hc</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node6 -->
<g id="edge6" class="edge">
<title>Node3&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M193.32,-263.48C202.77,-266.69 212.67,-270.06 222.34,-273.35"/>
<polygon fill="midnightblue" stroke="midnightblue" points="221.31,-276.69 231.9,-276.6 223.56,-270.07 221.31,-276.69"/>
<!-- Node4&#45;&gt;Node6 -->
<g id="edge5" class="edge">
<title>Node4&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M174.52,-277.6C190.44,-286.1 209.1,-296.05 226,-305 228.87,-306.52 231.81,-308.08 234.79,-309.65"/>
<polygon fill="midnightblue" stroke="midnightblue" points="233.26,-312.8 243.74,-314.37 236.53,-306.61 233.26,-312.8"/>
</g>
<!-- Node7 -->
<g id="node7" class="node">
<title>Node7</title>
<g id="a_node7"><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="black" points="232,-158.5 232,-199.5 342,-199.5 342,-158.5 232,-158.5"/>
<text text-anchor="start" x="240" y="-187.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-176.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-165.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_par</text>
<g id="a_node7"><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="black" points="229,-236.5 229,-277.5 339,-277.5 339,-236.5 229,-236.5"/>
<text text-anchor="start" x="237" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-243.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_labels</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node7 -->
<g id="edge8" class="edge">
<title>Node3&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M184.71,-224.48C199.36,-217.9 215.75,-210.54 231,-203.69"/>
<polygon fill="midnightblue" stroke="midnightblue" points="232.63,-206.8 240.32,-199.51 229.77,-200.41 232.63,-206.8"/>
<!-- Node4&#45;&gt;Node7 -->
<g id="edge7" class="edge">
<title>Node4&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M190.32,-257C199.57,-257 209.25,-257 218.73,-257"/>
<polygon fill="midnightblue" stroke="midnightblue" points="218.9,-260.5 228.9,-257 218.9,-253.5 218.9,-260.5"/>
</g>
<!-- Node8 -->
<g id="node8" class="node">
<title>Node8</title>
<g id="a_node8"><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="black" points="232,-98.5 232,-139.5 342,-139.5 342,-98.5 232,-98.5"/>
<text text-anchor="start" x="240" y="-127.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-116.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-105.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::init</text>
<g id="a_node8"><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="black" points="229,-98.5 229,-139.5 339,-139.5 339,-98.5 229,-98.5"/>
<text text-anchor="start" x="237" y="-127.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-116.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-105.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_par</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node8 -->
<g id="edge10" class="edge">
<title>Node3&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M183.14,-224.4C187.76,-221.28 192.16,-217.81 196,-214 219.44,-190.74 208.66,-172.37 232,-149 233.07,-147.93 234.18,-146.89 235.33,-145.88"/>
<polygon fill="midnightblue" stroke="midnightblue" points="237.65,-148.5 243.37,-139.59 233.34,-142.99 237.65,-148.5"/>
</g>
<!-- Node5&#45;&gt;Node5 -->
<g id="edge5" class="edge">
<title>Node5&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M260.17,-393.86C257.24,-403.54 266.18,-412 287,-412 300.01,-412 308.38,-408.7 312.12,-403.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.59,-404.31 313.83,-393.86 308.69,-403.13 315.59,-404.31"/>
</g>
<!-- Node6&#45;&gt;Node6 -->
<g id="edge7" class="edge">
<title>Node6&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M260.17,-315.86C257.24,-325.54 266.18,-334 287,-334 300.01,-334 308.38,-330.7 312.12,-325.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.59,-326.31 313.83,-315.86 308.69,-325.13 315.59,-326.31"/>
</g>
<!-- Node7&#45;&gt;Node7 -->
<!-- Node4&#45;&gt;Node8 -->
<g id="edge9" class="edge">
<title>Node7&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M260.17,-199.86C257.24,-209.54 266.18,-218 287,-218 300.01,-218 308.38,-214.7 312.12,-209.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.59,-210.31 313.83,-199.86 308.69,-209.13 315.59,-210.31"/>
<title>Node4&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M167.33,-236.33C175.13,-230.52 183.2,-223.89 190,-217 209.23,-197.51 207.39,-187.08 226,-167 232.59,-159.89 240.2,-152.83 247.67,-146.41"/>
<polygon fill="midnightblue" stroke="midnightblue" points="250.26,-148.81 255.67,-139.71 245.76,-143.44 250.26,-148.81"/>
</g>
<!-- Node9 -->
<g id="node9" class="node">
<title>Node9</title>
<g id="a_node9"><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="black" points="378,-59.5 378,-100.5 488,-100.5 488,-59.5 378,-59.5"/>
<text text-anchor="start" x="386" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_lca</text>
<g id="a_node9"><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="black" points="229,-176.5 229,-217.5 339,-217.5 339,-176.5 229,-176.5"/>
<text text-anchor="start" x="237" y="-205.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-194.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-183.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::init</text>
</a>
</g>
</g>
<!-- Node8&#45;&gt;Node9 -->
<!-- Node4&#45;&gt;Node9 -->
<g id="edge11" class="edge">
<title>Node8&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M342.03,-104.37C350.5,-102.07 359.32,-99.69 367.98,-97.34"/>
<polygon fill="midnightblue" stroke="midnightblue" points="368.93,-100.71 377.67,-94.72 367.1,-93.95 368.93,-100.71"/>
<title>Node4&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M186.59,-236.35C198.25,-231.59 210.77,-226.48 222.8,-221.57"/>
<polygon fill="midnightblue" stroke="midnightblue" points="224.38,-224.71 232.32,-217.69 221.74,-218.23 224.38,-224.71"/>
</g>
<!-- Node6&#45;&gt;Node6 -->
<g id="edge6" class="edge">
<title>Node6&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M256.8,-355.86C253.83,-365.54 262.9,-374 284,-374 297.19,-374 305.68,-370.7 309.46,-365.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="312.93,-366.32 311.2,-355.86 306.04,-365.12 312.93,-366.32"/>
</g>
<!-- Node7&#45;&gt;Node7 -->
<g id="edge8" class="edge">
<title>Node7&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M256.8,-277.86C253.83,-287.54 262.9,-296 284,-296 297.19,-296 305.68,-292.7 309.46,-287.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="312.93,-288.32 311.2,-277.86 306.04,-287.12 312.93,-288.32"/>
</g>
<!-- Node8&#45;&gt;Node8 -->
<g id="edge10" class="edge">
<title>Node8&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M256.8,-139.86C253.83,-149.54 262.9,-158 284,-158 297.19,-158 305.68,-154.7 309.46,-149.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="312.93,-150.32 311.2,-139.86 306.04,-149.12 312.93,-150.32"/>
</g>
<!-- Node10 -->
<g id="node10" class="node">
<title>Node10</title>
<g id="a_node10"><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_node10"><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="black" points="378,-137.5 378,-178.5 488,-178.5 488,-137.5 378,-137.5"/>
<text text-anchor="start" x="386" y="-166.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-155.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-144.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_size</text>
<text text-anchor="middle" x="433" y="-144.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_lca</text>
</a>
</g>
</g>
<!-- Node8&#45;&gt;Node10 -->
<g id="edge13" class="edge">
<title>Node8&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M342.03,-133.63C350.5,-135.93 359.32,-138.31 367.98,-140.66"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.1,-144.05 377.67,-143.28 368.93,-137.29 367.1,-144.05"/>
</g>
<!-- Node9&#45;&gt;Node9 -->
<!-- Node9&#45;&gt;Node10 -->
<g id="edge12" class="edge">
<title>Node9&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M406.17,-100.86C403.24,-110.54 412.18,-119 433,-119 446.01,-119 454.38,-115.7 458.12,-110.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.59,-111.31 459.83,-100.86 454.69,-110.13 461.59,-111.31"/>
<title>Node9&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M339.32,-182.59C348.67,-180.11 358.46,-177.51 368.03,-174.97"/>
<polygon fill="midnightblue" stroke="midnightblue" points="369.14,-178.3 377.9,-172.35 367.34,-171.53 369.14,-178.3"/>
</g>
<!-- Node11 -->
<g id="node11" class="node">
<title>Node11</title>
<g id="a_node11"><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="black" points="378,-215.5 378,-256.5 488,-256.5 488,-215.5 378,-215.5"/>
<text text-anchor="start" x="386" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_size</text>
</a>
</g>
</g>
<!-- Node9&#45;&gt;Node11 -->
<g id="edge14" class="edge">
<title>Node9&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M339.32,-211.41C348.67,-213.89 358.46,-216.49 368.03,-219.03"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.34,-222.47 377.9,-221.65 369.14,-215.7 367.34,-222.47"/>
</g>
<!-- Node10&#45;&gt;Node10 -->
<g id="edge14" class="edge">
<g id="edge13" class="edge">
<title>Node10&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M406.17,-178.86C403.24,-188.54 412.18,-197 433,-197 446.01,-197 454.38,-193.7 458.12,-188.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.59,-189.31 459.83,-178.86 454.69,-188.13 461.59,-189.31"/>
<path fill="none" stroke="midnightblue" d="M405.8,-178.86C402.83,-188.54 411.9,-197 433,-197 446.19,-197 454.68,-193.7 458.46,-188.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.93,-189.32 460.2,-178.86 455.04,-188.12 461.93,-189.32"/>
</g>
<!-- Node11&#45;&gt;Node11 -->
<g id="edge15" class="edge">
<title>Node11&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M405.8,-256.86C402.83,-266.54 411.9,-275 433,-275 446.19,-275 454.68,-271.7 458.46,-266.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.93,-267.32 460.2,-256.86 455.04,-266.12 461.93,-267.32"/>
</g>
<!-- Node13 -->
<g id="node13" class="node">
<title>Node13</title>
<g id="a_node13"><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="black" points="232,-430.5 232,-471.5 342,-471.5 342,-430.5 232,-430.5"/>
<text text-anchor="start" x="240" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::chain_query</text>
<polygon fill="white" stroke="black" points="229,-430.5 229,-471.5 339,-471.5 339,-430.5 229,-430.5"/>
<text text-anchor="start" x="237" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::chain_query</text>
</a>
</g>
</g>
<!-- Node12&#45;&gt;Node13 -->
<g id="edge17" class="edge">
<g id="edge18" class="edge">
<title>Node12&#45;&gt;Node13</title>
<path fill="none" stroke="midnightblue" d="M180.34,-398.53C197.48,-407.04 217.52,-416.99 235.52,-425.93"/>
<polygon fill="midnightblue" stroke="midnightblue" points="234.2,-429.19 244.72,-430.5 237.32,-422.92 234.2,-429.19"/>
<path fill="none" stroke="midnightblue" d="M190.32,-451C199.57,-451 209.25,-451 218.73,-451"/>
<polygon fill="midnightblue" stroke="midnightblue" points="218.9,-454.5 228.9,-451 218.9,-447.5 218.9,-454.5"/>
</g>
<!-- Node15 -->
<g id="node15" class="node">
<title>Node15</title>
<g id="a_node15"><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="black" points="232,-490.5 232,-531.5 342,-531.5 342,-490.5 232,-490.5"/>
<text text-anchor="start" x="240" y="-519.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-497.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lca</text>
<polygon fill="white" stroke="black" points="229,-490.5 229,-531.5 339,-531.5 339,-490.5 229,-490.5"/>
<text text-anchor="start" x="237" y="-519.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-497.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lca</text>
</a>
</g>
</g>
<!-- Node12&#45;&gt;Node15 -->
<g id="edge20" class="edge">
<g id="edge21" class="edge">
<title>Node12&#45;&gt;Node15</title>
<path fill="none" stroke="midnightblue" d="M184.75,-398.59C188.81,-401.42 192.64,-404.56 196,-408 221.24,-433.91 207.05,-454.8 232,-481 232.92,-481.96 233.87,-482.9 234.85,-483.81"/>
<polygon fill="midnightblue" stroke="midnightblue" points="232.97,-486.79 242.93,-490.38 237.38,-481.36 232.97,-486.79"/>
<path fill="none" stroke="midnightblue" d="M186.59,-471.65C198.25,-476.41 210.77,-481.52 222.8,-486.43"/>
<polygon fill="midnightblue" stroke="midnightblue" points="221.74,-489.77 232.32,-490.31 224.38,-483.29 221.74,-489.77"/>
</g>
<!-- Node13&#45;&gt;Node4 -->
<g id="edge18" class="edge">
<title>Node13&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M328.43,-430.41C333.15,-427.47 337.78,-424.31 342,-421 367.69,-400.85 392.6,-373.18 409.67,-352.54"/>
<polygon fill="midnightblue" stroke="midnightblue" points="412.44,-354.69 416.04,-344.73 407.01,-350.27 412.44,-354.69"/>
<!-- Node13&#45;&gt;Node5 -->
<g id="edge19" class="edge">
<title>Node13&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M339.32,-432.89C348.77,-429.74 358.67,-426.44 368.34,-423.22"/>
<polygon fill="midnightblue" stroke="midnightblue" points="369.52,-426.51 377.9,-420.03 367.31,-419.87 369.52,-426.51"/>
</g>
<!-- Node14 -->
<g id="node14" class="node">
<title>Node14</title>
<g id="a_node14"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap.html#" xlink:title=" ">
<g id="a_node14"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap#" xlink:title=" ">
<polygon fill="white" stroke="black" points="403.5,-441.5 403.5,-460.5 462.5,-460.5 462.5,-441.5 403.5,-441.5"/>
<text text-anchor="middle" x="433" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::swap</text>
</a>
</g>
</g>
<!-- Node13&#45;&gt;Node14 -->
<g id="edge19" class="edge">
<g id="edge20" class="edge">
<title>Node13&#45;&gt;Node14</title>
<path fill="none" stroke="midnightblue" d="M342.03,-451C358.89,-451 377.15,-451 392.79,-451"/>
<polygon fill="midnightblue" stroke="midnightblue" points="393.15,-454.5 403.15,-451 393.15,-447.5 393.15,-454.5"/>
<path fill="none" stroke="midnightblue" d="M339.32,-451C357.17,-451 376.63,-451 393.1,-451"/>
<polygon fill="midnightblue" stroke="midnightblue" points="393.44,-454.5 403.44,-451 393.44,-447.5 393.44,-454.5"/>
</g>
<!-- Node16 -->
<g id="node16" class="node">
@@ -349,33 +355,33 @@
</g>
</g>
<!-- Node15&#45;&gt;Node16 -->
<g id="edge21" class="edge">
<g id="edge22" class="edge">
<title>Node15&#45;&gt;Node16</title>
<path fill="none" stroke="midnightblue" d="M342.03,-511C350.31,-511 358.94,-511 367.42,-511"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.67,-514.5 377.67,-511 367.67,-507.5 367.67,-514.5"/>
<path fill="none" stroke="midnightblue" d="M339.32,-511C348.57,-511 358.25,-511 367.73,-511"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.9,-514.5 377.9,-511 367.9,-507.5 367.9,-514.5"/>
</g>
<!-- Node17&#45;&gt;Node18 -->
<g id="edge23" class="edge">
<g id="edge24" class="edge">
<title>Node17&#45;&gt;Node18</title>
<path fill="none" stroke="midnightblue" d="M193.32,-90.18C206.48,-87.31 220.53,-84.25 233.61,-81.41"/>
<polygon fill="midnightblue" stroke="midnightblue" points="234.36,-84.82 243.38,-79.28 232.87,-77.98 234.36,-84.82"/>
<path fill="none" stroke="midnightblue" d="M157.53,-166.45C167.63,-156.56 179.68,-144.4 190,-133 206.95,-114.27 205.2,-103.34 226,-89 228.88,-87.02 231.98,-85.23 235.2,-83.61"/>
<polygon fill="midnightblue" stroke="midnightblue" points="236.74,-86.76 244.48,-79.52 233.92,-80.35 236.74,-86.76"/>
</g>
<!-- Node20 -->
<g id="node20" class="node">
<title>Node20</title>
<g id="a_node20"><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="black" points="232,-0.5 232,-41.5 342,-41.5 342,-0.5 232,-0.5"/>
<text text-anchor="start" x="240" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::update</text>
<polygon fill="white" stroke="black" points="229,-0.5 229,-41.5 339,-41.5 339,-0.5 229,-0.5"/>
<text text-anchor="start" x="237" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::update</text>
</a>
</g>
</g>
<!-- Node19&#45;&gt;Node20 -->
<g id="edge26" class="edge">
<g id="edge27" class="edge">
<title>Node19&#45;&gt;Node20</title>
<path fill="none" stroke="midnightblue" d="M193.32,-29.83C202.57,-28.95 212.25,-28.02 221.73,-27.12"/>
<polygon fill="midnightblue" stroke="midnightblue" points="222.28,-30.58 231.9,-26.15 221.62,-23.62 222.28,-30.58"/>
<path fill="none" stroke="midnightblue" d="M190.32,-27.3C199.57,-26.68 209.25,-26.02 218.73,-25.37"/>
<polygon fill="midnightblue" stroke="midnightblue" points="219.16,-28.85 228.9,-24.68 218.69,-21.87 219.16,-28.85"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -1,22 +1,22 @@
<map id="test_2" name="test_2">
<area shape="rect" id="node1" title=" " alt="" coords="5,441,64,468"/>
<area shape="rect" id="node2" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a79ab4601c4a95c0902ac04e779e5f54d" title="Adds an undirected edge from node u to node v in the tree." alt="" coords="116,103,263,159"/>
<area shape="rect" id="node3" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" title="This function must be called after the tree adjacency list and node values are populated The function..." alt="" coords="116,360,263,416"/>
<area shape="rect" id="node11" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/push_back.html#" title=" " alt="" coords="112,441,267,468"/>
<area shape="rect" id="node12" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a4dfbf5d9df825eeb63b294c6849bdcab" title="This function returns the sum of node values in the simple path from from node_1 to node_2." alt="" coords="116,183,263,239"/>
<area shape="rect" id="node17" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a04cd96efaba147b19d3afc769b90ff70" title="Set the values for all the nodes." alt="" coords="116,551,263,607"/>
<area shape="rect" id="node18" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="330,608,446,635"/>
<area shape="rect" id="node19" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a9f1cb54ed09fde931bf3220d75ee4c57" title="This function updates the value at node with val." alt="" coords="116,640,263,696"/>
<area shape="rect" id="node4" 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="509,255,656,311"/>
<area shape="rect" id="node5" 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="315,189,461,245"/>
<area shape="rect" id="node6" 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="315,293,461,349"/>
<area shape="rect" id="node7" 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="315,448,461,504"/>
<area shape="rect" id="node8" 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="315,528,461,584"/>
<area shape="rect" id="node9" 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="509,580,656,636"/>
<area shape="rect" id="node10" 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="509,476,656,532"/>
<area shape="rect" id="node13" 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="315,85,461,141"/>
<area shape="rect" id="node15" 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="315,5,461,61"/>
<area shape="rect" id="node14" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/swap.html#" title=" " alt="" coords="543,100,622,127"/>
<area shape="rect" id="node16" 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="509,5,656,61"/>
<area shape="rect" id="node20" href="$d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c" title="Update the value at a node." alt="" coords="315,659,461,715"/>
<area shape="rect" id="node1" title=" " alt="" coords="5,420,64,447"/>
<area shape="rect" id="node2" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a79ab4601c4a95c0902ac04e779e5f54d" title="Adds an undirected edge from node u to node v in the tree." alt="" coords="112,5,259,61"/>
<area shape="rect" id="node3" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/push_back#" title=" " alt="" coords="307,16,461,43"/>
<area shape="rect" id="node4" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" title="This function must be called after the tree adjacency list and node values are populated The function..." alt="" coords="112,405,259,461"/>
<area shape="rect" id="node12" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a4dfbf5d9df825eeb63b294c6849bdcab" title="This function returns the sum of node values in the simple path from from node_1 to node_2." alt="" coords="112,147,259,203"/>
<area shape="rect" id="node17" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a04cd96efaba147b19d3afc769b90ff70" title="Set the values for all the nodes." alt="" coords="112,499,259,555"/>
<area shape="rect" id="node18" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size#" title=" " alt="" coords="326,669,442,696"/>
<area shape="rect" id="node19" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a9f1cb54ed09fde931bf3220d75ee4c57" title="This function updates the value at node with val." alt="" coords="112,707,259,763"/>
<area shape="rect" id="node5" 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="509,212,656,268"/>
<area shape="rect" id="node6" 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="311,301,457,357"/>
<area shape="rect" id="node7" 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="311,405,457,461"/>
<area shape="rect" id="node8" 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="311,589,457,645"/>
<area shape="rect" id="node9" 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="311,485,457,541"/>
<area shape="rect" id="node10" 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="509,537,656,593"/>
<area shape="rect" id="node11" 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="509,433,656,489"/>
<area shape="rect" id="node13" 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="311,147,457,203"/>
<area shape="rect" id="node15" 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="311,67,457,123"/>
<area shape="rect" id="node14" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/swap#" title=" " alt="" coords="543,161,622,188"/>
<area shape="rect" id="node16" 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="509,67,656,123"/>
<area shape="rect" id="node20" href="$d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c" title="Update the value at a node." alt="" coords="311,720,457,776"/>
</map>

View File

@@ -1 +1 @@
fa3693c6de27a9e1109bd97939b39ce7
a239bb0c985378f5f5c233b13f93b272

View File

@@ -4,7 +4,7 @@
<!-- Generated by graphviz version 2.50.0 (20211204.2007)
-->
<!-- Title: test_2 Pages: 1 -->
<!--zoomable 540 -->
<!--zoomable 586 -->
<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[
.edge:hover path { stroke: red; }
@@ -47,20 +47,20 @@ if (edges && edges.length) {
<script type="text/javascript">
var viewWidth = 496;
var viewHeight = 540;
var viewHeight = 586;
var sectionId = 'dynsection-3';
</script>
<script xlink:href="../../svgpan.js"/>
<svg id="graph" class="graph">
<g id="viewport">
<title>test_2</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-536 492,-536 492,4 -4,4"/>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-582 492,-582 492,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title=" ">
<polygon fill="#bfbfbf" stroke="black" points="0,-185.5 0,-204.5 44,-204.5 44,-185.5 0,-185.5"/>
<text text-anchor="middle" x="22" y="-192.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_2</text>
<polygon fill="#bfbfbf" stroke="black" points="0,-247.5 0,-266.5 44,-266.5 44,-247.5 0,-247.5"/>
<text text-anchor="middle" x="22" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_2</text>
</a>
</g>
</g>
@@ -68,320 +68,326 @@ var sectionId = 'dynsection-3';
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a79ab4601c4a95c0902ac04e779e5f54d" target="_top" xlink:title="Adds an undirected edge from node u to node v in the tree.">
<polygon fill="white" stroke="black" points="83,-417.5 83,-458.5 193,-458.5 193,-417.5 83,-417.5"/>
<text text-anchor="start" x="91" y="-446.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-435.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-424.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::add_edge</text>
<polygon fill="white" stroke="black" points="80,-536.5 80,-577.5 190,-577.5 190,-536.5 80,-536.5"/>
<text text-anchor="start" x="88" y="-565.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-554.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-543.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::add_edge</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M22.97,-204.69C23.34,-237.16 28.64,-343.69 80,-408 80.7,-408.87 81.43,-409.73 82.19,-410.55"/>
<polygon fill="midnightblue" stroke="midnightblue" points="79.96,-413.26 89.7,-417.43 84.69,-408.1 79.96,-413.26"/>
<path fill="none" stroke="midnightblue" d="M22.7,-266.51C21.99,-302.71 23.63,-434.06 80,-519 82.53,-522.81 85.58,-526.36 88.93,-529.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="86.81,-532.42 96.66,-536.34 91.41,-527.14 86.81,-532.42"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" 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="black" points="83,-224.5 83,-265.5 193,-265.5 193,-224.5 83,-224.5"/>
<text text-anchor="start" x="91" y="-253.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-231.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::init</text>
<g id="a_node3"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/push_back#" xlink:title=" ">
<polygon fill="white" stroke="black" points="226,-550.5 226,-569.5 342,-569.5 342,-550.5 226,-550.5"/>
<text text-anchor="middle" x="284" y="-557.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::push_back</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<g id="edge16" class="edge">
<title>Node1&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M44.18,-204.29C54.54,-208.83 67.56,-214.54 80.54,-220.24"/>
<polygon fill="midnightblue" stroke="midnightblue" points="79.38,-223.55 89.95,-224.36 82.2,-217.14 79.38,-223.55"/>
<path fill="none" stroke="midnightblue" d="M22.58,-266.9C21.66,-301.08 23.17,-415.55 80,-481 82.87,-484.31 221.89,-539.47 226,-541 231.57,-543.07 237.49,-545.16 243.33,-547.16"/>
<polygon fill="midnightblue" stroke="midnightblue" points="242.39,-550.54 252.99,-550.42 244.63,-543.91 242.39,-550.54"/>
</g>
<!-- Node11 -->
<g id="node11" class="node">
<title>Node11</title>
<g id="a_node11"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/push_back.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="80,-185.5 80,-204.5 196,-204.5 196,-185.5 80,-185.5"/>
<text text-anchor="middle" x="138" y="-192.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::push_back</text>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" 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="black" points="80,-236.5 80,-277.5 190,-277.5 190,-236.5 80,-236.5"/>
<text text-anchor="start" x="88" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-243.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::init</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node11 -->
<g id="edge15" class="edge">
<title>Node1&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M44.18,-195C51.65,-195 60.5,-195 69.72,-195"/>
<polygon fill="midnightblue" stroke="midnightblue" points="69.83,-198.5 79.83,-195 69.83,-191.5 69.83,-198.5"/>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node1&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M44.14,-257C51.62,-257 60.48,-257 69.67,-257"/>
<polygon fill="midnightblue" stroke="midnightblue" points="69.72,-260.5 79.72,-257 69.72,-253.5 69.72,-260.5"/>
</g>
<!-- Node12 -->
<g id="node12" class="node">
<title>Node12</title>
<g id="a_node12"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a4dfbf5d9df825eeb63b294c6849bdcab" target="_top" xlink:title="This function returns the sum of node values in the simple path from from node_1 to node_2.">
<polygon fill="white" stroke="black" points="83,-357.5 83,-398.5 193,-398.5 193,-357.5 83,-357.5"/>
<text text-anchor="start" x="91" y="-386.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-375.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::query</text>
<polygon fill="white" stroke="black" points="80,-430.5 80,-471.5 190,-471.5 190,-430.5 80,-430.5"/>
<text text-anchor="start" x="88" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::query</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node12 -->
<g id="edge16" class="edge">
<g id="edge17" class="edge">
<title>Node1&#45;&gt;Node12</title>
<path fill="none" stroke="midnightblue" d="M28.97,-204.58C45.53,-231.17 92.55,-306.65 118.77,-348.74"/>
<polygon fill="midnightblue" stroke="midnightblue" points="115.93,-350.8 124.19,-357.43 121.87,-347.09 115.93,-350.8"/>
<path fill="none" stroke="midnightblue" d="M28.5,-266.62C44.51,-294.6 91.54,-376.78 117.06,-421.39"/>
<polygon fill="midnightblue" stroke="midnightblue" points="114.15,-423.36 122.16,-430.3 120.23,-419.88 114.15,-423.36"/>
</g>
<!-- Node17 -->
<g id="node17" class="node">
<title>Node17</title>
<g id="a_node17"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a04cd96efaba147b19d3afc769b90ff70" target="_top" xlink:title="Set the values for all the nodes.">
<polygon fill="white" stroke="black" points="83,-81.5 83,-122.5 193,-122.5 193,-81.5 83,-81.5"/>
<text text-anchor="start" x="91" y="-110.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-99.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::set_node_val</text>
<polygon fill="white" stroke="black" points="80,-166.5 80,-207.5 190,-207.5 190,-166.5 80,-166.5"/>
<text text-anchor="start" x="88" y="-195.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::set_node_val</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node17 -->
<g id="edge22" class="edge">
<g id="edge23" class="edge">
<title>Node1&#45;&gt;Node17</title>
<path fill="none" stroke="midnightblue" d="M32.26,-185.34C43.2,-174.15 62.18,-155.39 80,-141 85.27,-136.75 90.98,-132.48 96.69,-128.4"/>
<polygon fill="midnightblue" stroke="midnightblue" points="98.81,-131.19 105,-122.59 94.8,-125.45 98.81,-131.19"/>
<path fill="none" stroke="midnightblue" d="M38.43,-247.27C52.49,-238.41 73.87,-224.92 92.85,-212.95"/>
<polygon fill="midnightblue" stroke="midnightblue" points="94.78,-215.87 101.37,-207.58 91.05,-209.95 94.78,-215.87"/>
</g>
<!-- Node18 -->
<g id="node18" class="node">
<title>Node18</title>
<g id="a_node18"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="243.5,-60.5 243.5,-79.5 330.5,-79.5 330.5,-60.5 243.5,-60.5"/>
<text text-anchor="middle" x="287" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
<g id="a_node18"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size#" xlink:title=" ">
<polygon fill="white" stroke="black" points="240.5,-60.5 240.5,-79.5 327.5,-79.5 327.5,-60.5 240.5,-60.5"/>
<text text-anchor="middle" x="284" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node18 -->
<g id="edge24" class="edge">
<g id="edge25" class="edge">
<title>Node1&#45;&gt;Node18</title>
<path fill="none" stroke="midnightblue" d="M44.28,-187.94C87.61,-173.47 183.11,-141.04 196,-132 216.41,-117.69 211.51,-103.2 232,-89 234.74,-87.1 237.68,-85.38 240.73,-83.81"/>
<polygon fill="midnightblue" stroke="midnightblue" points="242.44,-86.88 250.11,-79.57 239.56,-80.5 242.44,-86.88"/>
<path fill="none" stroke="midnightblue" d="M26.18,-247.47C33.08,-228.06 51.19,-183.53 80,-157 122.74,-117.64 186.01,-94.39 230.53,-81.97"/>
<polygon fill="midnightblue" stroke="midnightblue" points="231.55,-85.32 240.29,-79.34 229.73,-78.56 231.55,-85.32"/>
</g>
<!-- Node19 -->
<g id="node19" class="node">
<title>Node19</title>
<g id="a_node19"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a9f1cb54ed09fde931bf3220d75ee4c57" target="_top" xlink:title="This function updates the value at node with val.">
<polygon fill="white" stroke="black" points="83,-14.5 83,-55.5 193,-55.5 193,-14.5 83,-14.5"/>
<text text-anchor="start" x="91" y="-43.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::update</text>
<polygon fill="white" stroke="black" points="80,-10.5 80,-51.5 190,-51.5 190,-10.5 80,-10.5"/>
<text text-anchor="start" x="88" y="-39.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-28.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::update</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node19 -->
<g id="edge25" class="edge">
<g id="edge26" class="edge">
<title>Node1&#45;&gt;Node19</title>
<path fill="none" stroke="midnightblue" d="M25.47,-185.36C31.54,-163.18 49,-107.74 80,-72 83.17,-68.35 86.78,-64.92 90.62,-61.73"/>
<polygon fill="midnightblue" stroke="midnightblue" points="92.9,-64.39 98.73,-55.54 88.66,-58.83 92.9,-64.39"/>
<path fill="none" stroke="midnightblue" d="M25.62,-247.36C32.52,-222.73 52.58,-155.85 80,-105 88.48,-89.27 99.93,-73.09 110.09,-59.88"/>
<polygon fill="midnightblue" stroke="midnightblue" points="113.12,-61.7 116.55,-51.67 107.62,-57.37 113.12,-61.7"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><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="black" points="378,-303.5 378,-344.5 488,-344.5 488,-303.5 378,-303.5"/>
<text text-anchor="start" x="386" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::combine</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node3&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M193.09,-243.38C234.88,-243.77 293.58,-247.91 342,-265 362.7,-272.31 383.37,-285.34 399.66,-297.3"/>
<polygon fill="midnightblue" stroke="midnightblue" points="397.67,-300.18 407.76,-303.42 401.89,-294.6 397.67,-300.18"/>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<title>Node2&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M190.32,-558.11C198.58,-558.28 207.18,-558.45 215.67,-558.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="215.88,-562.13 225.95,-558.84 216.02,-555.13 215.88,-562.13"/>
</g>
<!-- Node5 -->
<g id="node5" class="node">
<title>Node5</title>
<g id="a_node5"><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="black" points="232,-352.5 232,-393.5 342,-393.5 342,-352.5 232,-352.5"/>
<text text-anchor="start" x="240" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-359.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_hc</text>
<g id="a_node5"><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="black" points="378,-381.5 378,-422.5 488,-422.5 488,-381.5 378,-381.5"/>
<text text-anchor="start" x="386" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-399.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-388.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::combine</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node5 -->
<!-- Node4&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<title>Node3&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M155.26,-265.52C172.7,-286.66 201.97,-319.72 232,-343 233.59,-344.23 235.24,-345.44 236.92,-346.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="235.33,-349.78 245.61,-352.37 239.19,-343.94 235.33,-349.78"/>
<title>Node4&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M144.2,-277.84C156.9,-306.98 184.27,-359.04 226,-383 268.82,-407.59 325.06,-411.25 367.95,-409.36"/>
<polygon fill="midnightblue" stroke="midnightblue" points="368.21,-412.86 378,-408.81 367.82,-405.87 368.21,-412.86"/>
</g>
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><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="black" points="232,-274.5 232,-315.5 342,-315.5 342,-274.5 232,-274.5"/>
<text text-anchor="start" x="240" y="-303.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-292.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-281.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_labels</text>
<g id="a_node6"><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="black" points="229,-314.5 229,-355.5 339,-355.5 339,-314.5 229,-314.5"/>
<text text-anchor="start" x="237" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_hc</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node6 -->
<g id="edge6" class="edge">
<title>Node3&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M193.32,-263.48C202.77,-266.69 212.67,-270.06 222.34,-273.35"/>
<polygon fill="midnightblue" stroke="midnightblue" points="221.31,-276.69 231.9,-276.6 223.56,-270.07 221.31,-276.69"/>
<!-- Node4&#45;&gt;Node6 -->
<g id="edge5" class="edge">
<title>Node4&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M174.52,-277.6C190.44,-286.1 209.1,-296.05 226,-305 228.87,-306.52 231.81,-308.08 234.79,-309.65"/>
<polygon fill="midnightblue" stroke="midnightblue" points="233.26,-312.8 243.74,-314.37 236.53,-306.61 233.26,-312.8"/>
</g>
<!-- Node7 -->
<g id="node7" class="node">
<title>Node7</title>
<g id="a_node7"><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="black" points="232,-158.5 232,-199.5 342,-199.5 342,-158.5 232,-158.5"/>
<text text-anchor="start" x="240" y="-187.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-176.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-165.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_par</text>
<g id="a_node7"><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="black" points="229,-236.5 229,-277.5 339,-277.5 339,-236.5 229,-236.5"/>
<text text-anchor="start" x="237" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-243.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_labels</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node7 -->
<g id="edge8" class="edge">
<title>Node3&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M184.71,-224.48C199.36,-217.9 215.75,-210.54 231,-203.69"/>
<polygon fill="midnightblue" stroke="midnightblue" points="232.63,-206.8 240.32,-199.51 229.77,-200.41 232.63,-206.8"/>
<!-- Node4&#45;&gt;Node7 -->
<g id="edge7" class="edge">
<title>Node4&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M190.32,-257C199.57,-257 209.25,-257 218.73,-257"/>
<polygon fill="midnightblue" stroke="midnightblue" points="218.9,-260.5 228.9,-257 218.9,-253.5 218.9,-260.5"/>
</g>
<!-- Node8 -->
<g id="node8" class="node">
<title>Node8</title>
<g id="a_node8"><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="black" points="232,-98.5 232,-139.5 342,-139.5 342,-98.5 232,-98.5"/>
<text text-anchor="start" x="240" y="-127.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-116.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-105.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::init</text>
<g id="a_node8"><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="black" points="229,-98.5 229,-139.5 339,-139.5 339,-98.5 229,-98.5"/>
<text text-anchor="start" x="237" y="-127.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-116.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-105.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_par</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node8 -->
<g id="edge10" class="edge">
<title>Node3&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M183.14,-224.4C187.76,-221.28 192.16,-217.81 196,-214 219.44,-190.74 208.66,-172.37 232,-149 233.07,-147.93 234.18,-146.89 235.33,-145.88"/>
<polygon fill="midnightblue" stroke="midnightblue" points="237.65,-148.5 243.37,-139.59 233.34,-142.99 237.65,-148.5"/>
</g>
<!-- Node5&#45;&gt;Node5 -->
<g id="edge5" class="edge">
<title>Node5&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M260.17,-393.86C257.24,-403.54 266.18,-412 287,-412 300.01,-412 308.38,-408.7 312.12,-403.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.59,-404.31 313.83,-393.86 308.69,-403.13 315.59,-404.31"/>
</g>
<!-- Node6&#45;&gt;Node6 -->
<g id="edge7" class="edge">
<title>Node6&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M260.17,-315.86C257.24,-325.54 266.18,-334 287,-334 300.01,-334 308.38,-330.7 312.12,-325.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.59,-326.31 313.83,-315.86 308.69,-325.13 315.59,-326.31"/>
</g>
<!-- Node7&#45;&gt;Node7 -->
<!-- Node4&#45;&gt;Node8 -->
<g id="edge9" class="edge">
<title>Node7&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M260.17,-199.86C257.24,-209.54 266.18,-218 287,-218 300.01,-218 308.38,-214.7 312.12,-209.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.59,-210.31 313.83,-199.86 308.69,-209.13 315.59,-210.31"/>
<title>Node4&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M167.33,-236.33C175.13,-230.52 183.2,-223.89 190,-217 209.23,-197.51 207.39,-187.08 226,-167 232.59,-159.89 240.2,-152.83 247.67,-146.41"/>
<polygon fill="midnightblue" stroke="midnightblue" points="250.26,-148.81 255.67,-139.71 245.76,-143.44 250.26,-148.81"/>
</g>
<!-- Node9 -->
<g id="node9" class="node">
<title>Node9</title>
<g id="a_node9"><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="black" points="378,-59.5 378,-100.5 488,-100.5 488,-59.5 378,-59.5"/>
<text text-anchor="start" x="386" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_lca</text>
<g id="a_node9"><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="black" points="229,-176.5 229,-217.5 339,-217.5 339,-176.5 229,-176.5"/>
<text text-anchor="start" x="237" y="-205.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-194.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-183.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::init</text>
</a>
</g>
</g>
<!-- Node8&#45;&gt;Node9 -->
<!-- Node4&#45;&gt;Node9 -->
<g id="edge11" class="edge">
<title>Node8&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M342.03,-104.37C350.5,-102.07 359.32,-99.69 367.98,-97.34"/>
<polygon fill="midnightblue" stroke="midnightblue" points="368.93,-100.71 377.67,-94.72 367.1,-93.95 368.93,-100.71"/>
<title>Node4&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M186.59,-236.35C198.25,-231.59 210.77,-226.48 222.8,-221.57"/>
<polygon fill="midnightblue" stroke="midnightblue" points="224.38,-224.71 232.32,-217.69 221.74,-218.23 224.38,-224.71"/>
</g>
<!-- Node6&#45;&gt;Node6 -->
<g id="edge6" class="edge">
<title>Node6&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M256.8,-355.86C253.83,-365.54 262.9,-374 284,-374 297.19,-374 305.68,-370.7 309.46,-365.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="312.93,-366.32 311.2,-355.86 306.04,-365.12 312.93,-366.32"/>
</g>
<!-- Node7&#45;&gt;Node7 -->
<g id="edge8" class="edge">
<title>Node7&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M256.8,-277.86C253.83,-287.54 262.9,-296 284,-296 297.19,-296 305.68,-292.7 309.46,-287.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="312.93,-288.32 311.2,-277.86 306.04,-287.12 312.93,-288.32"/>
</g>
<!-- Node8&#45;&gt;Node8 -->
<g id="edge10" class="edge">
<title>Node8&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M256.8,-139.86C253.83,-149.54 262.9,-158 284,-158 297.19,-158 305.68,-154.7 309.46,-149.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="312.93,-150.32 311.2,-139.86 306.04,-149.12 312.93,-150.32"/>
</g>
<!-- Node10 -->
<g id="node10" class="node">
<title>Node10</title>
<g id="a_node10"><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_node10"><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="black" points="378,-137.5 378,-178.5 488,-178.5 488,-137.5 378,-137.5"/>
<text text-anchor="start" x="386" y="-166.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-155.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-144.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_size</text>
<text text-anchor="middle" x="433" y="-144.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_lca</text>
</a>
</g>
</g>
<!-- Node8&#45;&gt;Node10 -->
<g id="edge13" class="edge">
<title>Node8&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M342.03,-133.63C350.5,-135.93 359.32,-138.31 367.98,-140.66"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.1,-144.05 377.67,-143.28 368.93,-137.29 367.1,-144.05"/>
</g>
<!-- Node9&#45;&gt;Node9 -->
<!-- Node9&#45;&gt;Node10 -->
<g id="edge12" class="edge">
<title>Node9&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M406.17,-100.86C403.24,-110.54 412.18,-119 433,-119 446.01,-119 454.38,-115.7 458.12,-110.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.59,-111.31 459.83,-100.86 454.69,-110.13 461.59,-111.31"/>
<title>Node9&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M339.32,-182.59C348.67,-180.11 358.46,-177.51 368.03,-174.97"/>
<polygon fill="midnightblue" stroke="midnightblue" points="369.14,-178.3 377.9,-172.35 367.34,-171.53 369.14,-178.3"/>
</g>
<!-- Node11 -->
<g id="node11" class="node">
<title>Node11</title>
<g id="a_node11"><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="black" points="378,-215.5 378,-256.5 488,-256.5 488,-215.5 378,-215.5"/>
<text text-anchor="start" x="386" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_size</text>
</a>
</g>
</g>
<!-- Node9&#45;&gt;Node11 -->
<g id="edge14" class="edge">
<title>Node9&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M339.32,-211.41C348.67,-213.89 358.46,-216.49 368.03,-219.03"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.34,-222.47 377.9,-221.65 369.14,-215.7 367.34,-222.47"/>
</g>
<!-- Node10&#45;&gt;Node10 -->
<g id="edge14" class="edge">
<g id="edge13" class="edge">
<title>Node10&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M406.17,-178.86C403.24,-188.54 412.18,-197 433,-197 446.01,-197 454.38,-193.7 458.12,-188.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.59,-189.31 459.83,-178.86 454.69,-188.13 461.59,-189.31"/>
<path fill="none" stroke="midnightblue" d="M405.8,-178.86C402.83,-188.54 411.9,-197 433,-197 446.19,-197 454.68,-193.7 458.46,-188.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.93,-189.32 460.2,-178.86 455.04,-188.12 461.93,-189.32"/>
</g>
<!-- Node11&#45;&gt;Node11 -->
<g id="edge15" class="edge">
<title>Node11&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M405.8,-256.86C402.83,-266.54 411.9,-275 433,-275 446.19,-275 454.68,-271.7 458.46,-266.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.93,-267.32 460.2,-256.86 455.04,-266.12 461.93,-267.32"/>
</g>
<!-- Node13 -->
<g id="node13" class="node">
<title>Node13</title>
<g id="a_node13"><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="black" points="232,-430.5 232,-471.5 342,-471.5 342,-430.5 232,-430.5"/>
<text text-anchor="start" x="240" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::chain_query</text>
<polygon fill="white" stroke="black" points="229,-430.5 229,-471.5 339,-471.5 339,-430.5 229,-430.5"/>
<text text-anchor="start" x="237" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::chain_query</text>
</a>
</g>
</g>
<!-- Node12&#45;&gt;Node13 -->
<g id="edge17" class="edge">
<g id="edge18" class="edge">
<title>Node12&#45;&gt;Node13</title>
<path fill="none" stroke="midnightblue" d="M180.34,-398.53C197.48,-407.04 217.52,-416.99 235.52,-425.93"/>
<polygon fill="midnightblue" stroke="midnightblue" points="234.2,-429.19 244.72,-430.5 237.32,-422.92 234.2,-429.19"/>
<path fill="none" stroke="midnightblue" d="M190.32,-451C199.57,-451 209.25,-451 218.73,-451"/>
<polygon fill="midnightblue" stroke="midnightblue" points="218.9,-454.5 228.9,-451 218.9,-447.5 218.9,-454.5"/>
</g>
<!-- Node15 -->
<g id="node15" class="node">
<title>Node15</title>
<g id="a_node15"><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="black" points="232,-490.5 232,-531.5 342,-531.5 342,-490.5 232,-490.5"/>
<text text-anchor="start" x="240" y="-519.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-497.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lca</text>
<polygon fill="white" stroke="black" points="229,-490.5 229,-531.5 339,-531.5 339,-490.5 229,-490.5"/>
<text text-anchor="start" x="237" y="-519.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-497.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lca</text>
</a>
</g>
</g>
<!-- Node12&#45;&gt;Node15 -->
<g id="edge20" class="edge">
<g id="edge21" class="edge">
<title>Node12&#45;&gt;Node15</title>
<path fill="none" stroke="midnightblue" d="M184.75,-398.59C188.81,-401.42 192.64,-404.56 196,-408 221.24,-433.91 207.05,-454.8 232,-481 232.92,-481.96 233.87,-482.9 234.85,-483.81"/>
<polygon fill="midnightblue" stroke="midnightblue" points="232.97,-486.79 242.93,-490.38 237.38,-481.36 232.97,-486.79"/>
<path fill="none" stroke="midnightblue" d="M186.59,-471.65C198.25,-476.41 210.77,-481.52 222.8,-486.43"/>
<polygon fill="midnightblue" stroke="midnightblue" points="221.74,-489.77 232.32,-490.31 224.38,-483.29 221.74,-489.77"/>
</g>
<!-- Node13&#45;&gt;Node4 -->
<g id="edge18" class="edge">
<title>Node13&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M328.43,-430.41C333.15,-427.47 337.78,-424.31 342,-421 367.69,-400.85 392.6,-373.18 409.67,-352.54"/>
<polygon fill="midnightblue" stroke="midnightblue" points="412.44,-354.69 416.04,-344.73 407.01,-350.27 412.44,-354.69"/>
<!-- Node13&#45;&gt;Node5 -->
<g id="edge19" class="edge">
<title>Node13&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M339.32,-432.89C348.77,-429.74 358.67,-426.44 368.34,-423.22"/>
<polygon fill="midnightblue" stroke="midnightblue" points="369.52,-426.51 377.9,-420.03 367.31,-419.87 369.52,-426.51"/>
</g>
<!-- Node14 -->
<g id="node14" class="node">
<title>Node14</title>
<g id="a_node14"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap.html#" xlink:title=" ">
<g id="a_node14"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap#" xlink:title=" ">
<polygon fill="white" stroke="black" points="403.5,-441.5 403.5,-460.5 462.5,-460.5 462.5,-441.5 403.5,-441.5"/>
<text text-anchor="middle" x="433" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::swap</text>
</a>
</g>
</g>
<!-- Node13&#45;&gt;Node14 -->
<g id="edge19" class="edge">
<g id="edge20" class="edge">
<title>Node13&#45;&gt;Node14</title>
<path fill="none" stroke="midnightblue" d="M342.03,-451C358.89,-451 377.15,-451 392.79,-451"/>
<polygon fill="midnightblue" stroke="midnightblue" points="393.15,-454.5 403.15,-451 393.15,-447.5 393.15,-454.5"/>
<path fill="none" stroke="midnightblue" d="M339.32,-451C357.17,-451 376.63,-451 393.1,-451"/>
<polygon fill="midnightblue" stroke="midnightblue" points="393.44,-454.5 403.44,-451 393.44,-447.5 393.44,-454.5"/>
</g>
<!-- Node16 -->
<g id="node16" class="node">
@@ -395,33 +401,33 @@ var sectionId = 'dynsection-3';
</g>
</g>
<!-- Node15&#45;&gt;Node16 -->
<g id="edge21" class="edge">
<g id="edge22" class="edge">
<title>Node15&#45;&gt;Node16</title>
<path fill="none" stroke="midnightblue" d="M342.03,-511C350.31,-511 358.94,-511 367.42,-511"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.67,-514.5 377.67,-511 367.67,-507.5 367.67,-514.5"/>
<path fill="none" stroke="midnightblue" d="M339.32,-511C348.57,-511 358.25,-511 367.73,-511"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.9,-514.5 377.9,-511 367.9,-507.5 367.9,-514.5"/>
</g>
<!-- Node17&#45;&gt;Node18 -->
<g id="edge23" class="edge">
<g id="edge24" class="edge">
<title>Node17&#45;&gt;Node18</title>
<path fill="none" stroke="midnightblue" d="M193.32,-90.18C206.48,-87.31 220.53,-84.25 233.61,-81.41"/>
<polygon fill="midnightblue" stroke="midnightblue" points="234.36,-84.82 243.38,-79.28 232.87,-77.98 234.36,-84.82"/>
<path fill="none" stroke="midnightblue" d="M157.53,-166.45C167.63,-156.56 179.68,-144.4 190,-133 206.95,-114.27 205.2,-103.34 226,-89 228.88,-87.02 231.98,-85.23 235.2,-83.61"/>
<polygon fill="midnightblue" stroke="midnightblue" points="236.74,-86.76 244.48,-79.52 233.92,-80.35 236.74,-86.76"/>
</g>
<!-- Node20 -->
<g id="node20" class="node">
<title>Node20</title>
<g id="a_node20"><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="black" points="232,-0.5 232,-41.5 342,-41.5 342,-0.5 232,-0.5"/>
<text text-anchor="start" x="240" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::update</text>
<polygon fill="white" stroke="black" points="229,-0.5 229,-41.5 339,-41.5 339,-0.5 229,-0.5"/>
<text text-anchor="start" x="237" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::update</text>
</a>
</g>
</g>
<!-- Node19&#45;&gt;Node20 -->
<g id="edge26" class="edge">
<g id="edge27" class="edge">
<title>Node19&#45;&gt;Node20</title>
<path fill="none" stroke="midnightblue" d="M193.32,-29.83C202.57,-28.95 212.25,-28.02 221.73,-27.12"/>
<polygon fill="midnightblue" stroke="midnightblue" points="222.28,-30.58 231.9,-26.15 221.62,-23.62 222.28,-30.58"/>
<path fill="none" stroke="midnightblue" d="M190.32,-27.3C199.57,-26.68 209.25,-26.02 218.73,-25.37"/>
<polygon fill="midnightblue" stroke="midnightblue" points="219.16,-28.85 228.9,-24.68 218.69,-21.87 219.16,-28.85"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -4,17 +4,17 @@
<!-- Generated by graphviz version 2.50.0 (20211204.2007)
-->
<!-- Title: test_2 Pages: 1 -->
<svg width="496pt" height="540pt"
viewBox="0.00 0.00 496.00 540.00" 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 536)">
<svg width="496pt" height="586pt"
viewBox="0.00 0.00 496.00 586.00" 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 582)">
<title>test_2</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-536 492,-536 492,4 -4,4"/>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-582 492,-582 492,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title=" ">
<polygon fill="#bfbfbf" stroke="black" points="0,-185.5 0,-204.5 44,-204.5 44,-185.5 0,-185.5"/>
<text text-anchor="middle" x="22" y="-192.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_2</text>
<polygon fill="#bfbfbf" stroke="black" points="0,-247.5 0,-266.5 44,-266.5 44,-247.5 0,-247.5"/>
<text text-anchor="middle" x="22" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_2</text>
</a>
</g>
</g>
@@ -22,320 +22,326 @@
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a79ab4601c4a95c0902ac04e779e5f54d" target="_top" xlink:title="Adds an undirected edge from node u to node v in the tree.">
<polygon fill="white" stroke="black" points="83,-417.5 83,-458.5 193,-458.5 193,-417.5 83,-417.5"/>
<text text-anchor="start" x="91" y="-446.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-435.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-424.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::add_edge</text>
<polygon fill="white" stroke="black" points="80,-536.5 80,-577.5 190,-577.5 190,-536.5 80,-536.5"/>
<text text-anchor="start" x="88" y="-565.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-554.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-543.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::add_edge</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M22.97,-204.69C23.34,-237.16 28.64,-343.69 80,-408 80.7,-408.87 81.43,-409.73 82.19,-410.55"/>
<polygon fill="midnightblue" stroke="midnightblue" points="79.96,-413.26 89.7,-417.43 84.69,-408.1 79.96,-413.26"/>
<path fill="none" stroke="midnightblue" d="M22.7,-266.51C21.99,-302.71 23.63,-434.06 80,-519 82.53,-522.81 85.58,-526.36 88.93,-529.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="86.81,-532.42 96.66,-536.34 91.41,-527.14 86.81,-532.42"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" 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="black" points="83,-224.5 83,-265.5 193,-265.5 193,-224.5 83,-224.5"/>
<text text-anchor="start" x="91" y="-253.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-231.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::init</text>
<g id="a_node3"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/push_back#" xlink:title=" ">
<polygon fill="white" stroke="black" points="226,-550.5 226,-569.5 342,-569.5 342,-550.5 226,-550.5"/>
<text text-anchor="middle" x="284" y="-557.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::push_back</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<g id="edge16" class="edge">
<title>Node1&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M44.18,-204.29C54.54,-208.83 67.56,-214.54 80.54,-220.24"/>
<polygon fill="midnightblue" stroke="midnightblue" points="79.38,-223.55 89.95,-224.36 82.2,-217.14 79.38,-223.55"/>
<path fill="none" stroke="midnightblue" d="M22.58,-266.9C21.66,-301.08 23.17,-415.55 80,-481 82.87,-484.31 221.89,-539.47 226,-541 231.57,-543.07 237.49,-545.16 243.33,-547.16"/>
<polygon fill="midnightblue" stroke="midnightblue" points="242.39,-550.54 252.99,-550.42 244.63,-543.91 242.39,-550.54"/>
</g>
<!-- Node11 -->
<g id="node11" class="node">
<title>Node11</title>
<g id="a_node11"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/push_back.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="80,-185.5 80,-204.5 196,-204.5 196,-185.5 80,-185.5"/>
<text text-anchor="middle" x="138" y="-192.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::push_back</text>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" 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="black" points="80,-236.5 80,-277.5 190,-277.5 190,-236.5 80,-236.5"/>
<text text-anchor="start" x="88" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-243.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::init</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node11 -->
<g id="edge15" class="edge">
<title>Node1&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M44.18,-195C51.65,-195 60.5,-195 69.72,-195"/>
<polygon fill="midnightblue" stroke="midnightblue" points="69.83,-198.5 79.83,-195 69.83,-191.5 69.83,-198.5"/>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node1&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M44.14,-257C51.62,-257 60.48,-257 69.67,-257"/>
<polygon fill="midnightblue" stroke="midnightblue" points="69.72,-260.5 79.72,-257 69.72,-253.5 69.72,-260.5"/>
</g>
<!-- Node12 -->
<g id="node12" class="node">
<title>Node12</title>
<g id="a_node12"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a4dfbf5d9df825eeb63b294c6849bdcab" target="_top" xlink:title="This function returns the sum of node values in the simple path from from node_1 to node_2.">
<polygon fill="white" stroke="black" points="83,-357.5 83,-398.5 193,-398.5 193,-357.5 83,-357.5"/>
<text text-anchor="start" x="91" y="-386.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-375.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::query</text>
<polygon fill="white" stroke="black" points="80,-430.5 80,-471.5 190,-471.5 190,-430.5 80,-430.5"/>
<text text-anchor="start" x="88" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::query</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node12 -->
<g id="edge16" class="edge">
<g id="edge17" class="edge">
<title>Node1&#45;&gt;Node12</title>
<path fill="none" stroke="midnightblue" d="M28.97,-204.58C45.53,-231.17 92.55,-306.65 118.77,-348.74"/>
<polygon fill="midnightblue" stroke="midnightblue" points="115.93,-350.8 124.19,-357.43 121.87,-347.09 115.93,-350.8"/>
<path fill="none" stroke="midnightblue" d="M28.5,-266.62C44.51,-294.6 91.54,-376.78 117.06,-421.39"/>
<polygon fill="midnightblue" stroke="midnightblue" points="114.15,-423.36 122.16,-430.3 120.23,-419.88 114.15,-423.36"/>
</g>
<!-- Node17 -->
<g id="node17" class="node">
<title>Node17</title>
<g id="a_node17"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a04cd96efaba147b19d3afc769b90ff70" target="_top" xlink:title="Set the values for all the nodes.">
<polygon fill="white" stroke="black" points="83,-81.5 83,-122.5 193,-122.5 193,-81.5 83,-81.5"/>
<text text-anchor="start" x="91" y="-110.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-99.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::set_node_val</text>
<polygon fill="white" stroke="black" points="80,-166.5 80,-207.5 190,-207.5 190,-166.5 80,-166.5"/>
<text text-anchor="start" x="88" y="-195.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::set_node_val</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node17 -->
<g id="edge22" class="edge">
<g id="edge23" class="edge">
<title>Node1&#45;&gt;Node17</title>
<path fill="none" stroke="midnightblue" d="M32.26,-185.34C43.2,-174.15 62.18,-155.39 80,-141 85.27,-136.75 90.98,-132.48 96.69,-128.4"/>
<polygon fill="midnightblue" stroke="midnightblue" points="98.81,-131.19 105,-122.59 94.8,-125.45 98.81,-131.19"/>
<path fill="none" stroke="midnightblue" d="M38.43,-247.27C52.49,-238.41 73.87,-224.92 92.85,-212.95"/>
<polygon fill="midnightblue" stroke="midnightblue" points="94.78,-215.87 101.37,-207.58 91.05,-209.95 94.78,-215.87"/>
</g>
<!-- Node18 -->
<g id="node18" class="node">
<title>Node18</title>
<g id="a_node18"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="243.5,-60.5 243.5,-79.5 330.5,-79.5 330.5,-60.5 243.5,-60.5"/>
<text text-anchor="middle" x="287" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
<g id="a_node18"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size#" xlink:title=" ">
<polygon fill="white" stroke="black" points="240.5,-60.5 240.5,-79.5 327.5,-79.5 327.5,-60.5 240.5,-60.5"/>
<text text-anchor="middle" x="284" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node18 -->
<g id="edge24" class="edge">
<g id="edge25" class="edge">
<title>Node1&#45;&gt;Node18</title>
<path fill="none" stroke="midnightblue" d="M44.28,-187.94C87.61,-173.47 183.11,-141.04 196,-132 216.41,-117.69 211.51,-103.2 232,-89 234.74,-87.1 237.68,-85.38 240.73,-83.81"/>
<polygon fill="midnightblue" stroke="midnightblue" points="242.44,-86.88 250.11,-79.57 239.56,-80.5 242.44,-86.88"/>
<path fill="none" stroke="midnightblue" d="M26.18,-247.47C33.08,-228.06 51.19,-183.53 80,-157 122.74,-117.64 186.01,-94.39 230.53,-81.97"/>
<polygon fill="midnightblue" stroke="midnightblue" points="231.55,-85.32 240.29,-79.34 229.73,-78.56 231.55,-85.32"/>
</g>
<!-- Node19 -->
<g id="node19" class="node">
<title>Node19</title>
<g id="a_node19"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a9f1cb54ed09fde931bf3220d75ee4c57" target="_top" xlink:title="This function updates the value at node with val.">
<polygon fill="white" stroke="black" points="83,-14.5 83,-55.5 193,-55.5 193,-14.5 83,-14.5"/>
<text text-anchor="start" x="91" y="-43.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::update</text>
<polygon fill="white" stroke="black" points="80,-10.5 80,-51.5 190,-51.5 190,-10.5 80,-10.5"/>
<text text-anchor="start" x="88" y="-39.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-28.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::update</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node19 -->
<g id="edge25" class="edge">
<g id="edge26" class="edge">
<title>Node1&#45;&gt;Node19</title>
<path fill="none" stroke="midnightblue" d="M25.47,-185.36C31.54,-163.18 49,-107.74 80,-72 83.17,-68.35 86.78,-64.92 90.62,-61.73"/>
<polygon fill="midnightblue" stroke="midnightblue" points="92.9,-64.39 98.73,-55.54 88.66,-58.83 92.9,-64.39"/>
<path fill="none" stroke="midnightblue" d="M25.62,-247.36C32.52,-222.73 52.58,-155.85 80,-105 88.48,-89.27 99.93,-73.09 110.09,-59.88"/>
<polygon fill="midnightblue" stroke="midnightblue" points="113.12,-61.7 116.55,-51.67 107.62,-57.37 113.12,-61.7"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><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="black" points="378,-303.5 378,-344.5 488,-344.5 488,-303.5 378,-303.5"/>
<text text-anchor="start" x="386" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::combine</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node3&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M193.09,-243.38C234.88,-243.77 293.58,-247.91 342,-265 362.7,-272.31 383.37,-285.34 399.66,-297.3"/>
<polygon fill="midnightblue" stroke="midnightblue" points="397.67,-300.18 407.76,-303.42 401.89,-294.6 397.67,-300.18"/>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<title>Node2&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M190.32,-558.11C198.58,-558.28 207.18,-558.45 215.67,-558.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="215.88,-562.13 225.95,-558.84 216.02,-555.13 215.88,-562.13"/>
</g>
<!-- Node5 -->
<g id="node5" class="node">
<title>Node5</title>
<g id="a_node5"><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="black" points="232,-352.5 232,-393.5 342,-393.5 342,-352.5 232,-352.5"/>
<text text-anchor="start" x="240" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-359.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_hc</text>
<g id="a_node5"><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="black" points="378,-381.5 378,-422.5 488,-422.5 488,-381.5 378,-381.5"/>
<text text-anchor="start" x="386" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-399.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-388.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::combine</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node5 -->
<!-- Node4&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<title>Node3&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M155.26,-265.52C172.7,-286.66 201.97,-319.72 232,-343 233.59,-344.23 235.24,-345.44 236.92,-346.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="235.33,-349.78 245.61,-352.37 239.19,-343.94 235.33,-349.78"/>
<title>Node4&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M144.2,-277.84C156.9,-306.98 184.27,-359.04 226,-383 268.82,-407.59 325.06,-411.25 367.95,-409.36"/>
<polygon fill="midnightblue" stroke="midnightblue" points="368.21,-412.86 378,-408.81 367.82,-405.87 368.21,-412.86"/>
</g>
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><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="black" points="232,-274.5 232,-315.5 342,-315.5 342,-274.5 232,-274.5"/>
<text text-anchor="start" x="240" y="-303.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-292.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-281.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_labels</text>
<g id="a_node6"><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="black" points="229,-314.5 229,-355.5 339,-355.5 339,-314.5 229,-314.5"/>
<text text-anchor="start" x="237" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_hc</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node6 -->
<g id="edge6" class="edge">
<title>Node3&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M193.32,-263.48C202.77,-266.69 212.67,-270.06 222.34,-273.35"/>
<polygon fill="midnightblue" stroke="midnightblue" points="221.31,-276.69 231.9,-276.6 223.56,-270.07 221.31,-276.69"/>
<!-- Node4&#45;&gt;Node6 -->
<g id="edge5" class="edge">
<title>Node4&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M174.52,-277.6C190.44,-286.1 209.1,-296.05 226,-305 228.87,-306.52 231.81,-308.08 234.79,-309.65"/>
<polygon fill="midnightblue" stroke="midnightblue" points="233.26,-312.8 243.74,-314.37 236.53,-306.61 233.26,-312.8"/>
</g>
<!-- Node7 -->
<g id="node7" class="node">
<title>Node7</title>
<g id="a_node7"><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="black" points="232,-158.5 232,-199.5 342,-199.5 342,-158.5 232,-158.5"/>
<text text-anchor="start" x="240" y="-187.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-176.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-165.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_par</text>
<g id="a_node7"><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="black" points="229,-236.5 229,-277.5 339,-277.5 339,-236.5 229,-236.5"/>
<text text-anchor="start" x="237" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-243.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_labels</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node7 -->
<g id="edge8" class="edge">
<title>Node3&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M184.71,-224.48C199.36,-217.9 215.75,-210.54 231,-203.69"/>
<polygon fill="midnightblue" stroke="midnightblue" points="232.63,-206.8 240.32,-199.51 229.77,-200.41 232.63,-206.8"/>
<!-- Node4&#45;&gt;Node7 -->
<g id="edge7" class="edge">
<title>Node4&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M190.32,-257C199.57,-257 209.25,-257 218.73,-257"/>
<polygon fill="midnightblue" stroke="midnightblue" points="218.9,-260.5 228.9,-257 218.9,-253.5 218.9,-260.5"/>
</g>
<!-- Node8 -->
<g id="node8" class="node">
<title>Node8</title>
<g id="a_node8"><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="black" points="232,-98.5 232,-139.5 342,-139.5 342,-98.5 232,-98.5"/>
<text text-anchor="start" x="240" y="-127.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-116.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-105.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::init</text>
<g id="a_node8"><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="black" points="229,-98.5 229,-139.5 339,-139.5 339,-98.5 229,-98.5"/>
<text text-anchor="start" x="237" y="-127.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-116.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-105.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_par</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node8 -->
<g id="edge10" class="edge">
<title>Node3&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M183.14,-224.4C187.76,-221.28 192.16,-217.81 196,-214 219.44,-190.74 208.66,-172.37 232,-149 233.07,-147.93 234.18,-146.89 235.33,-145.88"/>
<polygon fill="midnightblue" stroke="midnightblue" points="237.65,-148.5 243.37,-139.59 233.34,-142.99 237.65,-148.5"/>
</g>
<!-- Node5&#45;&gt;Node5 -->
<g id="edge5" class="edge">
<title>Node5&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M260.17,-393.86C257.24,-403.54 266.18,-412 287,-412 300.01,-412 308.38,-408.7 312.12,-403.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.59,-404.31 313.83,-393.86 308.69,-403.13 315.59,-404.31"/>
</g>
<!-- Node6&#45;&gt;Node6 -->
<g id="edge7" class="edge">
<title>Node6&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M260.17,-315.86C257.24,-325.54 266.18,-334 287,-334 300.01,-334 308.38,-330.7 312.12,-325.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.59,-326.31 313.83,-315.86 308.69,-325.13 315.59,-326.31"/>
</g>
<!-- Node7&#45;&gt;Node7 -->
<!-- Node4&#45;&gt;Node8 -->
<g id="edge9" class="edge">
<title>Node7&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M260.17,-199.86C257.24,-209.54 266.18,-218 287,-218 300.01,-218 308.38,-214.7 312.12,-209.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.59,-210.31 313.83,-199.86 308.69,-209.13 315.59,-210.31"/>
<title>Node4&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M167.33,-236.33C175.13,-230.52 183.2,-223.89 190,-217 209.23,-197.51 207.39,-187.08 226,-167 232.59,-159.89 240.2,-152.83 247.67,-146.41"/>
<polygon fill="midnightblue" stroke="midnightblue" points="250.26,-148.81 255.67,-139.71 245.76,-143.44 250.26,-148.81"/>
</g>
<!-- Node9 -->
<g id="node9" class="node">
<title>Node9</title>
<g id="a_node9"><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="black" points="378,-59.5 378,-100.5 488,-100.5 488,-59.5 378,-59.5"/>
<text text-anchor="start" x="386" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_lca</text>
<g id="a_node9"><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="black" points="229,-176.5 229,-217.5 339,-217.5 339,-176.5 229,-176.5"/>
<text text-anchor="start" x="237" y="-205.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-194.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-183.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::init</text>
</a>
</g>
</g>
<!-- Node8&#45;&gt;Node9 -->
<!-- Node4&#45;&gt;Node9 -->
<g id="edge11" class="edge">
<title>Node8&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M342.03,-104.37C350.5,-102.07 359.32,-99.69 367.98,-97.34"/>
<polygon fill="midnightblue" stroke="midnightblue" points="368.93,-100.71 377.67,-94.72 367.1,-93.95 368.93,-100.71"/>
<title>Node4&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M186.59,-236.35C198.25,-231.59 210.77,-226.48 222.8,-221.57"/>
<polygon fill="midnightblue" stroke="midnightblue" points="224.38,-224.71 232.32,-217.69 221.74,-218.23 224.38,-224.71"/>
</g>
<!-- Node6&#45;&gt;Node6 -->
<g id="edge6" class="edge">
<title>Node6&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M256.8,-355.86C253.83,-365.54 262.9,-374 284,-374 297.19,-374 305.68,-370.7 309.46,-365.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="312.93,-366.32 311.2,-355.86 306.04,-365.12 312.93,-366.32"/>
</g>
<!-- Node7&#45;&gt;Node7 -->
<g id="edge8" class="edge">
<title>Node7&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M256.8,-277.86C253.83,-287.54 262.9,-296 284,-296 297.19,-296 305.68,-292.7 309.46,-287.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="312.93,-288.32 311.2,-277.86 306.04,-287.12 312.93,-288.32"/>
</g>
<!-- Node8&#45;&gt;Node8 -->
<g id="edge10" class="edge">
<title>Node8&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M256.8,-139.86C253.83,-149.54 262.9,-158 284,-158 297.19,-158 305.68,-154.7 309.46,-149.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="312.93,-150.32 311.2,-139.86 306.04,-149.12 312.93,-150.32"/>
</g>
<!-- Node10 -->
<g id="node10" class="node">
<title>Node10</title>
<g id="a_node10"><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_node10"><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="black" points="378,-137.5 378,-178.5 488,-178.5 488,-137.5 378,-137.5"/>
<text text-anchor="start" x="386" y="-166.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-155.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-144.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_size</text>
<text text-anchor="middle" x="433" y="-144.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_lca</text>
</a>
</g>
</g>
<!-- Node8&#45;&gt;Node10 -->
<g id="edge13" class="edge">
<title>Node8&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M342.03,-133.63C350.5,-135.93 359.32,-138.31 367.98,-140.66"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.1,-144.05 377.67,-143.28 368.93,-137.29 367.1,-144.05"/>
</g>
<!-- Node9&#45;&gt;Node9 -->
<!-- Node9&#45;&gt;Node10 -->
<g id="edge12" class="edge">
<title>Node9&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M406.17,-100.86C403.24,-110.54 412.18,-119 433,-119 446.01,-119 454.38,-115.7 458.12,-110.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.59,-111.31 459.83,-100.86 454.69,-110.13 461.59,-111.31"/>
<title>Node9&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M339.32,-182.59C348.67,-180.11 358.46,-177.51 368.03,-174.97"/>
<polygon fill="midnightblue" stroke="midnightblue" points="369.14,-178.3 377.9,-172.35 367.34,-171.53 369.14,-178.3"/>
</g>
<!-- Node11 -->
<g id="node11" class="node">
<title>Node11</title>
<g id="a_node11"><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="black" points="378,-215.5 378,-256.5 488,-256.5 488,-215.5 378,-215.5"/>
<text text-anchor="start" x="386" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_size</text>
</a>
</g>
</g>
<!-- Node9&#45;&gt;Node11 -->
<g id="edge14" class="edge">
<title>Node9&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M339.32,-211.41C348.67,-213.89 358.46,-216.49 368.03,-219.03"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.34,-222.47 377.9,-221.65 369.14,-215.7 367.34,-222.47"/>
</g>
<!-- Node10&#45;&gt;Node10 -->
<g id="edge14" class="edge">
<g id="edge13" class="edge">
<title>Node10&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M406.17,-178.86C403.24,-188.54 412.18,-197 433,-197 446.01,-197 454.38,-193.7 458.12,-188.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.59,-189.31 459.83,-178.86 454.69,-188.13 461.59,-189.31"/>
<path fill="none" stroke="midnightblue" d="M405.8,-178.86C402.83,-188.54 411.9,-197 433,-197 446.19,-197 454.68,-193.7 458.46,-188.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.93,-189.32 460.2,-178.86 455.04,-188.12 461.93,-189.32"/>
</g>
<!-- Node11&#45;&gt;Node11 -->
<g id="edge15" class="edge">
<title>Node11&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M405.8,-256.86C402.83,-266.54 411.9,-275 433,-275 446.19,-275 454.68,-271.7 458.46,-266.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.93,-267.32 460.2,-256.86 455.04,-266.12 461.93,-267.32"/>
</g>
<!-- Node13 -->
<g id="node13" class="node">
<title>Node13</title>
<g id="a_node13"><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="black" points="232,-430.5 232,-471.5 342,-471.5 342,-430.5 232,-430.5"/>
<text text-anchor="start" x="240" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::chain_query</text>
<polygon fill="white" stroke="black" points="229,-430.5 229,-471.5 339,-471.5 339,-430.5 229,-430.5"/>
<text text-anchor="start" x="237" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::chain_query</text>
</a>
</g>
</g>
<!-- Node12&#45;&gt;Node13 -->
<g id="edge17" class="edge">
<g id="edge18" class="edge">
<title>Node12&#45;&gt;Node13</title>
<path fill="none" stroke="midnightblue" d="M180.34,-398.53C197.48,-407.04 217.52,-416.99 235.52,-425.93"/>
<polygon fill="midnightblue" stroke="midnightblue" points="234.2,-429.19 244.72,-430.5 237.32,-422.92 234.2,-429.19"/>
<path fill="none" stroke="midnightblue" d="M190.32,-451C199.57,-451 209.25,-451 218.73,-451"/>
<polygon fill="midnightblue" stroke="midnightblue" points="218.9,-454.5 228.9,-451 218.9,-447.5 218.9,-454.5"/>
</g>
<!-- Node15 -->
<g id="node15" class="node">
<title>Node15</title>
<g id="a_node15"><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="black" points="232,-490.5 232,-531.5 342,-531.5 342,-490.5 232,-490.5"/>
<text text-anchor="start" x="240" y="-519.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-497.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lca</text>
<polygon fill="white" stroke="black" points="229,-490.5 229,-531.5 339,-531.5 339,-490.5 229,-490.5"/>
<text text-anchor="start" x="237" y="-519.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-497.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lca</text>
</a>
</g>
</g>
<!-- Node12&#45;&gt;Node15 -->
<g id="edge20" class="edge">
<g id="edge21" class="edge">
<title>Node12&#45;&gt;Node15</title>
<path fill="none" stroke="midnightblue" d="M184.75,-398.59C188.81,-401.42 192.64,-404.56 196,-408 221.24,-433.91 207.05,-454.8 232,-481 232.92,-481.96 233.87,-482.9 234.85,-483.81"/>
<polygon fill="midnightblue" stroke="midnightblue" points="232.97,-486.79 242.93,-490.38 237.38,-481.36 232.97,-486.79"/>
<path fill="none" stroke="midnightblue" d="M186.59,-471.65C198.25,-476.41 210.77,-481.52 222.8,-486.43"/>
<polygon fill="midnightblue" stroke="midnightblue" points="221.74,-489.77 232.32,-490.31 224.38,-483.29 221.74,-489.77"/>
</g>
<!-- Node13&#45;&gt;Node4 -->
<g id="edge18" class="edge">
<title>Node13&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M328.43,-430.41C333.15,-427.47 337.78,-424.31 342,-421 367.69,-400.85 392.6,-373.18 409.67,-352.54"/>
<polygon fill="midnightblue" stroke="midnightblue" points="412.44,-354.69 416.04,-344.73 407.01,-350.27 412.44,-354.69"/>
<!-- Node13&#45;&gt;Node5 -->
<g id="edge19" class="edge">
<title>Node13&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M339.32,-432.89C348.77,-429.74 358.67,-426.44 368.34,-423.22"/>
<polygon fill="midnightblue" stroke="midnightblue" points="369.52,-426.51 377.9,-420.03 367.31,-419.87 369.52,-426.51"/>
</g>
<!-- Node14 -->
<g id="node14" class="node">
<title>Node14</title>
<g id="a_node14"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap.html#" xlink:title=" ">
<g id="a_node14"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap#" xlink:title=" ">
<polygon fill="white" stroke="black" points="403.5,-441.5 403.5,-460.5 462.5,-460.5 462.5,-441.5 403.5,-441.5"/>
<text text-anchor="middle" x="433" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::swap</text>
</a>
</g>
</g>
<!-- Node13&#45;&gt;Node14 -->
<g id="edge19" class="edge">
<g id="edge20" class="edge">
<title>Node13&#45;&gt;Node14</title>
<path fill="none" stroke="midnightblue" d="M342.03,-451C358.89,-451 377.15,-451 392.79,-451"/>
<polygon fill="midnightblue" stroke="midnightblue" points="393.15,-454.5 403.15,-451 393.15,-447.5 393.15,-454.5"/>
<path fill="none" stroke="midnightblue" d="M339.32,-451C357.17,-451 376.63,-451 393.1,-451"/>
<polygon fill="midnightblue" stroke="midnightblue" points="393.44,-454.5 403.44,-451 393.44,-447.5 393.44,-454.5"/>
</g>
<!-- Node16 -->
<g id="node16" class="node">
@@ -349,33 +355,33 @@
</g>
</g>
<!-- Node15&#45;&gt;Node16 -->
<g id="edge21" class="edge">
<g id="edge22" class="edge">
<title>Node15&#45;&gt;Node16</title>
<path fill="none" stroke="midnightblue" d="M342.03,-511C350.31,-511 358.94,-511 367.42,-511"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.67,-514.5 377.67,-511 367.67,-507.5 367.67,-514.5"/>
<path fill="none" stroke="midnightblue" d="M339.32,-511C348.57,-511 358.25,-511 367.73,-511"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.9,-514.5 377.9,-511 367.9,-507.5 367.9,-514.5"/>
</g>
<!-- Node17&#45;&gt;Node18 -->
<g id="edge23" class="edge">
<g id="edge24" class="edge">
<title>Node17&#45;&gt;Node18</title>
<path fill="none" stroke="midnightblue" d="M193.32,-90.18C206.48,-87.31 220.53,-84.25 233.61,-81.41"/>
<polygon fill="midnightblue" stroke="midnightblue" points="234.36,-84.82 243.38,-79.28 232.87,-77.98 234.36,-84.82"/>
<path fill="none" stroke="midnightblue" d="M157.53,-166.45C167.63,-156.56 179.68,-144.4 190,-133 206.95,-114.27 205.2,-103.34 226,-89 228.88,-87.02 231.98,-85.23 235.2,-83.61"/>
<polygon fill="midnightblue" stroke="midnightblue" points="236.74,-86.76 244.48,-79.52 233.92,-80.35 236.74,-86.76"/>
</g>
<!-- Node20 -->
<g id="node20" class="node">
<title>Node20</title>
<g id="a_node20"><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="black" points="232,-0.5 232,-41.5 342,-41.5 342,-0.5 232,-0.5"/>
<text text-anchor="start" x="240" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::update</text>
<polygon fill="white" stroke="black" points="229,-0.5 229,-41.5 339,-41.5 339,-0.5 229,-0.5"/>
<text text-anchor="start" x="237" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::update</text>
</a>
</g>
</g>
<!-- Node19&#45;&gt;Node20 -->
<g id="edge26" class="edge">
<g id="edge27" class="edge">
<title>Node19&#45;&gt;Node20</title>
<path fill="none" stroke="midnightblue" d="M193.32,-29.83C202.57,-28.95 212.25,-28.02 221.73,-27.12"/>
<polygon fill="midnightblue" stroke="midnightblue" points="222.28,-30.58 231.9,-26.15 221.62,-23.62 222.28,-30.58"/>
<path fill="none" stroke="midnightblue" d="M190.32,-27.3C199.57,-26.68 209.25,-26.02 218.73,-25.37"/>
<polygon fill="midnightblue" stroke="midnightblue" points="219.16,-28.85 228.9,-24.68 218.69,-21.87 219.16,-28.85"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -1,25 +1,25 @@
<map id="main" name="main">
<area shape="rect" id="node1" title=" " alt="" coords="5,274,56,301"/>
<area shape="rect" id="node2" href="$d2/de9/heavy__light__decomposition_8cpp.html#a34b8683a2b429de5cce57e6d733ec817" title=" " alt="" coords="104,325,163,351"/>
<area shape="rect" id="node22" href="$d2/de9/heavy__light__decomposition_8cpp.html#a458410412185a5f09199deaff7157a8d" title=" " alt="" coords="104,223,163,250"/>
<area shape="rect" id="node23" href="$d2/de9/heavy__light__decomposition_8cpp.html#af31ec5409537703d9c8a47350386b32a" title=" " alt="" coords="104,274,163,301"/>
<area shape="rect" id="node3" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a79ab4601c4a95c0902ac04e779e5f54d" title="Adds an undirected edge from node u to node v in the tree." alt="" coords="215,209,361,265"/>
<area shape="rect" id="node4" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" title="This function must be called after the tree adjacency list and node values are populated The function..." alt="" coords="215,521,361,577"/>
<area shape="rect" id="node12" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/push_back.html#" title=" " alt="" coords="211,289,365,315"/>
<area shape="rect" id="node13" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a4dfbf5d9df825eeb63b294c6849bdcab" title="This function returns the sum of node values in the simple path from from node_1 to node_2." alt="" coords="215,129,361,185"/>
<area shape="rect" id="node18" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a04cd96efaba147b19d3afc769b90ff70" title="Set the values for all the nodes." alt="" coords="215,390,361,446"/>
<area shape="rect" id="node19" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="429,327,545,354"/>
<area shape="rect" id="node20" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a9f1cb54ed09fde931bf3220d75ee4c57" title="This function updates the value at node with val." alt="" coords="215,49,361,105"/>
<area shape="rect" id="node5" 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="608,333,755,389"/>
<area shape="rect" id="node6" 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="413,637,560,693"/>
<area shape="rect" id="node7" 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="413,741,560,797"/>
<area shape="rect" id="node8" 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="413,402,560,458"/>
<area shape="rect" id="node9" 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="413,533,560,589"/>
<area shape="rect" id="node10" 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="608,585,755,641"/>
<area shape="rect" id="node11" 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="608,481,755,537"/>
<area shape="rect" id="node14" 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="413,222,560,278"/>
<area shape="rect" id="node16" 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="413,129,560,185"/>
<area shape="rect" id="node15" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/swap.html#" title=" " alt="" coords="642,237,721,263"/>
<area shape="rect" id="node17" 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="608,129,755,185"/>
<area shape="rect" id="node21" href="$d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c" title="Update the value at a node." alt="" coords="413,49,560,105"/>
<area shape="rect" id="node1" title=" " alt="" coords="5,300,56,327"/>
<area shape="rect" id="node2" href="$d2/de9/heavy__light__decomposition_8cpp.html#a34b8683a2b429de5cce57e6d733ec817" title=" " alt="" coords="104,300,163,327"/>
<area shape="rect" id="node22" href="$d2/de9/heavy__light__decomposition_8cpp.html#a458410412185a5f09199deaff7157a8d" title=" " alt="" coords="104,243,163,269"/>
<area shape="rect" id="node23" href="$d2/de9/heavy__light__decomposition_8cpp.html#af31ec5409537703d9c8a47350386b32a" title=" " alt="" coords="104,397,163,424"/>
<area shape="rect" id="node3" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a79ab4601c4a95c0902ac04e779e5f54d" title="Adds an undirected edge from node u to node v in the tree." alt="" coords="211,351,357,407"/>
<area shape="rect" id="node4" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/push_back#" title=" " alt="" coords="405,307,560,333"/>
<area shape="rect" id="node5" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" title="This function must be called after the tree adjacency list and node values are populated The function..." alt="" coords="211,612,357,668"/>
<area shape="rect" id="node13" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a4dfbf5d9df825eeb63b294c6849bdcab" title="This function returns the sum of node values in the simple path from from node_1 to node_2." alt="" coords="211,481,357,537"/>
<area shape="rect" id="node18" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a04cd96efaba147b19d3afc769b90ff70" title="Set the values for all the nodes." alt="" coords="211,220,357,276"/>
<area shape="rect" id="node19" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size#" title=" " alt="" coords="425,203,541,229"/>
<area shape="rect" id="node20" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a9f1cb54ed09fde931bf3220d75ee4c57" title="This function updates the value at node with val." alt="" coords="211,89,357,145"/>
<area shape="rect" id="node6" 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="608,560,755,616"/>
<area shape="rect" id="node7" 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="409,885,556,941"/>
<area shape="rect" id="node8" 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="409,547,556,603"/>
<area shape="rect" id="node9" 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="409,701,556,757"/>
<area shape="rect" id="node10" 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="409,781,556,837"/>
<area shape="rect" id="node11" 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="608,833,755,889"/>
<area shape="rect" id="node12" 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="608,729,755,785"/>
<area shape="rect" id="node14" 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="409,443,556,499"/>
<area shape="rect" id="node16" 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="409,363,556,419"/>
<area shape="rect" id="node15" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/swap#" title=" " alt="" coords="642,457,721,484"/>
<area shape="rect" id="node17" 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="608,363,755,419"/>
<area shape="rect" id="node21" href="$d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c" title="Update the value at a node." alt="" coords="409,89,556,145"/>
</map>

View File

@@ -1 +1 @@
1a1bfa2b2a0d752d9108a2cc8ba89af4
700cca7b0a3d4289d91146a72435c76e

View File

@@ -4,7 +4,7 @@
<!-- Generated by graphviz version 2.50.0 (20211204.2007)
-->
<!-- Title: main Pages: 1 -->
<!--zoomable 601 -->
<!--zoomable 710 -->
<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[
.edge:hover path { stroke: red; }
@@ -47,20 +47,20 @@ if (edges && edges.length) {
<script type="text/javascript">
var viewWidth = 570;
var viewHeight = 601;
var viewHeight = 710;
var sectionId = 'dynsection-1';
</script>
<script xlink:href="../../svgpan.js"/>
<svg id="graph" class="graph">
<g id="viewport">
<title>main</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-597.42 566,-597.42 566,4 -4,4"/>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-706.08 566,-706.08 566,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title=" ">
<polygon fill="#bfbfbf" stroke="black" points="0,-372.5 0,-391.5 38,-391.5 38,-372.5 0,-372.5"/>
<text text-anchor="middle" x="19" y="-379.5" font-family="Helvetica,sans-Serif" font-size="10.00">main</text>
<polygon fill="#bfbfbf" stroke="black" points="0,-461.5 0,-480.5 38,-480.5 38,-461.5 0,-461.5"/>
<text text-anchor="middle" x="19" y="-468.5" font-family="Helvetica,sans-Serif" font-size="10.00">main</text>
</a>
</g>
</g>
@@ -68,489 +68,495 @@ var sectionId = 'dynsection-1';
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d2/de9/heavy__light__decomposition_8cpp.html#a34b8683a2b429de5cce57e6d733ec817" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="74,-334.5 74,-353.5 118,-353.5 118,-334.5 74,-334.5"/>
<text text-anchor="middle" x="96" y="-341.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_1</text>
<polygon fill="white" stroke="black" points="74,-461.5 74,-480.5 118,-480.5 118,-461.5 74,-461.5"/>
<text text-anchor="middle" x="96" y="-468.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_1</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M38.16,-372.8C46.89,-368.37 57.56,-362.97 67.29,-358.04"/>
<polygon fill="midnightblue" stroke="midnightblue" points="68.89,-361.15 76.23,-353.51 65.73,-354.91 68.89,-361.15"/>
<path fill="none" stroke="midnightblue" d="M38.16,-471C45.8,-471 54.92,-471 63.59,-471"/>
<polygon fill="midnightblue" stroke="midnightblue" points="63.82,-474.5 73.82,-471 63.82,-467.5 63.82,-474.5"/>
</g>
<!-- Node22 -->
<g id="node22" class="node">
<title>Node22</title>
<g id="a_node22"><a xlink:href="../../d2/de9/heavy__light__decomposition_8cpp.html#a458410412185a5f09199deaff7157a8d" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="74,-410.5 74,-429.5 118,-429.5 118,-410.5 74,-410.5"/>
<text text-anchor="middle" x="96" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_2</text>
<polygon fill="white" stroke="black" points="74,-504.5 74,-523.5 118,-523.5 118,-504.5 74,-504.5"/>
<text text-anchor="middle" x="96" y="-511.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_2</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node22 -->
<g id="edge28" class="edge">
<g id="edge29" class="edge">
<title>Node1&#45;&gt;Node22</title>
<path fill="none" stroke="midnightblue" d="M38.16,-391.2C46.89,-395.63 57.56,-401.03 67.29,-405.96"/>
<polygon fill="midnightblue" stroke="midnightblue" points="65.73,-409.09 76.23,-410.49 68.89,-402.85 65.73,-409.09"/>
<path fill="none" stroke="midnightblue" d="M36.64,-480.54C46.35,-486.11 58.8,-493.25 69.7,-499.5"/>
<polygon fill="midnightblue" stroke="midnightblue" points="67.99,-502.55 78.4,-504.48 71.47,-496.47 67.99,-502.55"/>
</g>
<!-- Node23 -->
<g id="node23" class="node">
<title>Node23</title>
<g id="a_node23"><a xlink:href="../../d2/de9/heavy__light__decomposition_8cpp.html#af31ec5409537703d9c8a47350386b32a" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="74,-372.5 74,-391.5 118,-391.5 118,-372.5 74,-372.5"/>
<text text-anchor="middle" x="96" y="-379.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_3</text>
<polygon fill="white" stroke="black" points="74,-388.5 74,-407.5 118,-407.5 118,-388.5 74,-388.5"/>
<text text-anchor="middle" x="96" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_3</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node23 -->
<g id="edge36" class="edge">
<g id="edge37" class="edge">
<title>Node1&#45;&gt;Node23</title>
<path fill="none" stroke="midnightblue" d="M38.16,-382C45.8,-382 54.92,-382 63.59,-382"/>
<polygon fill="midnightblue" stroke="midnightblue" points="63.82,-385.5 73.82,-382 63.82,-378.5 63.82,-385.5"/>
<path fill="none" stroke="midnightblue" d="M29.8,-461.46C41.87,-449.72 62.56,-429.57 77.4,-415.13"/>
<polygon fill="midnightblue" stroke="midnightblue" points="80.23,-417.26 84.95,-407.78 75.35,-412.25 80.23,-417.26"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a79ab4601c4a95c0902ac04e779e5f54d" target="_top" xlink:title="Adds an undirected edge from node u to node v in the tree.">
<polygon fill="white" stroke="black" points="157,-399.5 157,-440.5 267,-440.5 267,-399.5 157,-399.5"/>
<text text-anchor="start" x="165" y="-428.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="165" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="212" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::add_edge</text>
<polygon fill="white" stroke="black" points="154,-401.5 154,-442.5 264,-442.5 264,-401.5 154,-401.5"/>
<text text-anchor="start" x="162" y="-430.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="162" y="-419.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="209" y="-408.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::add_edge</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<title>Node2&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M107.86,-353.84C118.98,-363.65 137,-378.82 154,-390 156.17,-391.42 158.41,-392.84 160.69,-394.23"/>
<polygon fill="midnightblue" stroke="midnightblue" points="159.26,-397.44 169.66,-399.47 162.79,-391.4 159.26,-397.44"/>
<path fill="none" stroke="midnightblue" d="M118.14,-461.67C127.86,-457.38 139.91,-452.06 151.98,-446.73"/>
<polygon fill="midnightblue" stroke="midnightblue" points="153.45,-449.9 161.19,-442.66 150.63,-443.5 153.45,-449.9"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" 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="black" points="157,-165.5 157,-206.5 267,-206.5 267,-165.5 157,-165.5"/>
<text text-anchor="start" x="165" y="-194.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="165" y="-183.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="212" y="-172.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::init</text>
<g id="a_node4"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/push_back#" xlink:title=" ">
<polygon fill="white" stroke="black" points="300,-456.5 300,-475.5 416,-475.5 416,-456.5 300,-456.5"/>
<text text-anchor="middle" x="358" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::push_back</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<g id="edge17" class="edge">
<title>Node2&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M99.41,-334.3C105.35,-312.01 122.56,-256.35 154,-221 156.62,-218.06 159.54,-215.28 162.64,-212.68"/>
<polygon fill="midnightblue" stroke="midnightblue" points="164.83,-215.42 170.65,-206.57 160.58,-209.85 164.83,-215.42"/>
<path fill="none" stroke="midnightblue" d="M118.28,-470.59C155.27,-469.88 232.91,-468.39 289.64,-467.3"/>
<polygon fill="midnightblue" stroke="midnightblue" points="290.04,-470.79 299.97,-467.1 289.91,-463.79 290.04,-470.79"/>
</g>
<!-- Node12 -->
<g id="node12" class="node">
<title>Node12</title>
<g id="a_node12"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/push_back.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="154,-361.5 154,-380.5 270,-380.5 270,-361.5 154,-361.5"/>
<text text-anchor="middle" x="212" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::push_back</text>
<!-- Node5 -->
<g id="node5" class="node">
<title>Node5</title>
<g id="a_node5"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" 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="black" points="154,-205.5 154,-246.5 264,-246.5 264,-205.5 154,-205.5"/>
<text text-anchor="start" x="162" y="-234.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="162" y="-223.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="209" y="-212.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::init</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node12 -->
<g id="edge16" class="edge">
<title>Node2&#45;&gt;Node12</title>
<path fill="none" stroke="midnightblue" d="M118.18,-349.02C130.1,-351.84 145.55,-355.5 160.41,-359.02"/>
<polygon fill="midnightblue" stroke="midnightblue" points="160.02,-362.52 170.55,-361.42 161.63,-355.71 160.02,-362.52"/>
<!-- Node2&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<title>Node2&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M101.13,-461.14C105.56,-450.39 112.69,-432.62 118,-417 136.34,-363.07 127.8,-344.58 154,-294 161.32,-279.86 171.8,-265.81 181.57,-254.19"/>
<polygon fill="midnightblue" stroke="midnightblue" points="184.28,-256.41 188.18,-246.56 178.99,-251.82 184.28,-256.41"/>
</g>
<!-- Node13 -->
<g id="node13" class="node">
<title>Node13</title>
<g id="a_node13"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a4dfbf5d9df825eeb63b294c6849bdcab" target="_top" xlink:title="This function returns the sum of node values in the simple path from from node_1 to node_2.">
<polygon fill="white" stroke="black" points="157,-459.5 157,-500.5 267,-500.5 267,-459.5 157,-459.5"/>
<text text-anchor="start" x="165" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="165" y="-477.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="212" y="-466.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::query</text>
<polygon fill="white" stroke="black" points="154,-303.5 154,-344.5 264,-344.5 264,-303.5 154,-303.5"/>
<text text-anchor="start" x="162" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="162" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="209" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::query</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node13 -->
<g id="edge17" class="edge">
<g id="edge18" class="edge">
<title>Node2&#45;&gt;Node13</title>
<path fill="none" stroke="midnightblue" d="M109.48,-353.63C112.54,-356.42 115.62,-359.62 118,-363 142.1,-397.21 125.8,-419.08 154,-450 154.89,-450.98 155.82,-451.93 156.78,-452.85"/>
<polygon fill="midnightblue" stroke="midnightblue" points="154.8,-455.75 164.73,-459.43 159.26,-450.36 154.8,-455.75"/>
<path fill="none" stroke="midnightblue" d="M103.7,-461.41C114.22,-446.44 135.32,-416.67 154,-392 163.91,-378.91 175.16,-364.66 184.81,-352.6"/>
<polygon fill="midnightblue" stroke="midnightblue" points="187.67,-354.63 191.21,-344.64 182.21,-350.24 187.67,-354.63"/>
</g>
<!-- Node18 -->
<g id="node18" class="node">
<title>Node18</title>
<g id="a_node18"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a04cd96efaba147b19d3afc769b90ff70" target="_top" xlink:title="Set the values for all the nodes.">
<polygon fill="white" stroke="black" points="157,-263.5 157,-304.5 267,-304.5 267,-263.5 157,-263.5"/>
<text text-anchor="start" x="165" y="-292.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="165" y="-281.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="212" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::set_node_val</text>
<polygon fill="white" stroke="black" points="154,-499.5 154,-540.5 264,-540.5 264,-499.5 154,-499.5"/>
<text text-anchor="start" x="162" y="-528.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="162" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="209" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::set_node_val</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node18 -->
<g id="edge23" class="edge">
<g id="edge24" class="edge">
<title>Node2&#45;&gt;Node18</title>
<path fill="none" stroke="midnightblue" d="M115.06,-334.49C127.88,-327.75 145.74,-318.35 162.57,-309.49"/>
<polygon fill="midnightblue" stroke="midnightblue" points="164.56,-312.4 171.78,-304.64 161.3,-306.2 164.56,-312.4"/>
<path fill="none" stroke="midnightblue" d="M118.14,-480.33C127.86,-484.62 139.91,-489.94 151.98,-495.27"/>
<polygon fill="midnightblue" stroke="midnightblue" points="150.63,-498.5 161.19,-499.34 153.45,-492.1 150.63,-498.5"/>
</g>
<!-- Node19 -->
<g id="node19" class="node">
<title>Node19</title>
<g id="a_node19"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="317.5,-332.5 317.5,-351.5 404.5,-351.5 404.5,-332.5 317.5,-332.5"/>
<text text-anchor="middle" x="361" y="-339.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
<g id="a_node19"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size#" xlink:title=" ">
<polygon fill="white" stroke="black" points="314.5,-534.5 314.5,-553.5 401.5,-553.5 401.5,-534.5 314.5,-534.5"/>
<text text-anchor="middle" x="358" y="-541.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node19 -->
<g id="edge25" class="edge">
<g id="edge26" class="edge">
<title>Node2&#45;&gt;Node19</title>
<path fill="none" stroke="midnightblue" d="M99.69,-334.37C105.7,-314.95 122.24,-271.48 154,-254 199.17,-229.14 225.91,-227.27 270,-254 299.58,-271.93 279.86,-300.35 306,-323 307.94,-324.68 310.04,-326.21 312.24,-327.62"/>
<polygon fill="midnightblue" stroke="midnightblue" points="310.69,-330.75 321.15,-332.39 313.99,-324.58 310.69,-330.75"/>
<path fill="none" stroke="midnightblue" d="M105.9,-480.55C109.76,-484.85 114.25,-490.06 118,-495 135.66,-518.27 128.3,-536.11 154,-550 205.25,-577.71 274.93,-567.14 317.88,-556.17"/>
<polygon fill="midnightblue" stroke="midnightblue" points="318.92,-559.52 327.67,-553.55 317.11,-552.76 318.92,-559.52"/>
</g>
<!-- Node20 -->
<g id="node20" class="node">
<title>Node20</title>
<g id="a_node20"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a9f1cb54ed09fde931bf3220d75ee4c57" target="_top" xlink:title="This function updates the value at node with val.">
<polygon fill="white" stroke="black" points="157,-519.5 157,-560.5 267,-560.5 267,-519.5 157,-519.5"/>
<text text-anchor="start" x="165" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="165" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="212" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::update</text>
<polygon fill="white" stroke="black" points="154,-597.5 154,-638.5 264,-638.5 264,-597.5 154,-597.5"/>
<text text-anchor="start" x="162" y="-626.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="162" y="-615.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="209" y="-604.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::update</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node20 -->
<g id="edge26" class="edge">
<g id="edge27" class="edge">
<title>Node2&#45;&gt;Node20</title>
<path fill="none" stroke="midnightblue" d="M110.27,-353.8C113.18,-356.5 115.99,-359.62 118,-363 152.45,-420.77 112.59,-457 154,-510 154.69,-510.88 155.41,-511.74 156.16,-512.57"/>
<polygon fill="midnightblue" stroke="midnightblue" points="153.91,-515.26 163.62,-519.5 158.67,-510.13 153.91,-515.26"/>
<path fill="none" stroke="midnightblue" d="M106.79,-480.69C110.63,-484.85 114.86,-489.91 118,-495 140.22,-530.95 127.04,-550.46 154,-583 156.35,-585.83 158.99,-588.52 161.8,-591.04"/>
<polygon fill="midnightblue" stroke="midnightblue" points="159.61,-593.77 169.58,-597.35 164.02,-588.34 159.61,-593.77"/>
</g>
<!-- Node5 -->
<g id="node5" class="node">
<title>Node5</title>
<g id="a_node5"><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="black" points="452,-306.5 452,-347.5 562,-347.5 562,-306.5 452,-306.5"/>
<text text-anchor="start" x="460" y="-335.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="460" y="-324.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="507" y="-313.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::combine</text>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<title>Node4&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M267.39,-198.85C318.4,-211.43 390.55,-230.73 416,-245 440.78,-258.89 464.35,-280.8 481.15,-298.48"/>
<polygon fill="midnightblue" stroke="midnightblue" points="479,-301.31 488.37,-306.26 484.14,-296.55 479,-301.31"/>
<!-- Node3&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node3&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M264.32,-438.26C281.09,-443.28 299.3,-448.73 315.1,-453.46"/>
<polygon fill="midnightblue" stroke="midnightblue" points="314.51,-456.94 325.09,-456.45 316.52,-450.23 314.51,-456.94"/>
</g>
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><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="black" points="306,-78.5 306,-119.5 416,-119.5 416,-78.5 306,-78.5"/>
<text text-anchor="start" x="314" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="314" y="-96.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="361" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_hc</text>
<g id="a_node6"><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="black" points="452,-244.5 452,-285.5 562,-285.5 562,-244.5 452,-244.5"/>
<text text-anchor="start" x="460" y="-273.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="460" y="-262.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="507" y="-251.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::combine</text>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node6 -->
<!-- Node5&#45;&gt;Node6 -->
<g id="edge5" class="edge">
<title>Node4&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M247.84,-165.38C268.36,-153.24 294.5,-137.77 316.38,-124.81"/>
<polygon fill="midnightblue" stroke="midnightblue" points="318.34,-127.73 325.16,-119.62 314.77,-121.7 318.34,-127.73"/>
<title>Node5&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M264.01,-229.1C305.7,-231.95 364.73,-236.97 416,-245 424.5,-246.33 433.4,-247.99 442.16,-249.77"/>
<polygon fill="midnightblue" stroke="midnightblue" points="441.45,-253.2 451.96,-251.83 442.89,-246.35 441.45,-253.2"/>
</g>
<!-- Node7 -->
<g id="node7" class="node">
<title>Node7</title>
<g id="a_node7"><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="black" points="306,-0.5 306,-41.5 416,-41.5 416,-0.5 306,-0.5"/>
<text text-anchor="start" x="314" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="314" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="361" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_labels</text>
<g id="a_node7"><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="black" points="303,-0.5 303,-41.5 413,-41.5 413,-0.5 303,-0.5"/>
<text text-anchor="start" x="311" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="311" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="358" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_hc</text>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node7 -->
<g id="edge7" class="edge">
<title>Node4&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M227.79,-165.25C245.35,-141.15 276.04,-100.66 306,-69 312.59,-62.04 320.05,-54.96 327.28,-48.46"/>
<polygon fill="midnightblue" stroke="midnightblue" points="329.8,-50.89 334.98,-41.65 325.17,-45.65 329.8,-50.89"/>
<!-- Node5&#45;&gt;Node7 -->
<g id="edge6" class="edge">
<title>Node5&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M218.91,-205.49C233.16,-174.06 263.25,-113.01 300,-69 306.09,-61.71 313.38,-54.65 320.67,-48.29"/>
<polygon fill="midnightblue" stroke="midnightblue" points="323.13,-50.8 328.53,-41.69 318.63,-45.44 323.13,-50.8"/>
</g>
<!-- Node8 -->
<g id="node8" class="node">
<title>Node8</title>
<g id="a_node8"><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="black" points="306,-254.5 306,-295.5 416,-295.5 416,-254.5 306,-254.5"/>
<text text-anchor="start" x="314" y="-283.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="314" y="-272.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="361" y="-261.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_par</text>
<g id="a_node8"><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="black" points="303,-254.5 303,-295.5 413,-295.5 413,-254.5 303,-254.5"/>
<text text-anchor="start" x="311" y="-283.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="311" y="-272.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="358" y="-261.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_labels</text>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node8 -->
<g id="edge9" class="edge">
<title>Node4&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M247.09,-206.64C268.06,-219.34 295.1,-235.71 317.46,-249.24"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.72,-252.28 326.09,-254.47 319.35,-246.3 315.72,-252.28"/>
<!-- Node5&#45;&gt;Node8 -->
<g id="edge8" class="edge">
<title>Node5&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M264.32,-244.11C273.77,-247.26 283.67,-250.56 293.34,-253.78"/>
<polygon fill="midnightblue" stroke="midnightblue" points="292.31,-257.13 302.9,-256.97 294.52,-250.49 292.31,-257.13"/>
</g>
<!-- Node9 -->
<g id="node9" class="node">
<title>Node9</title>
<g id="a_node9"><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="black" points="306,-156.5 306,-197.5 416,-197.5 416,-156.5 306,-156.5"/>
<text text-anchor="start" x="314" y="-185.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="314" y="-174.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="361" y="-163.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::init</text>
<g id="a_node9"><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="black" points="303,-138.5 303,-179.5 413,-179.5 413,-138.5 303,-138.5"/>
<text text-anchor="start" x="311" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="311" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="358" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_par</text>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node9 -->
<g id="edge11" class="edge">
<title>Node4&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M267.32,-182.67C276.57,-182.11 286.25,-181.52 295.73,-180.93"/>
<polygon fill="midnightblue" stroke="midnightblue" points="296.14,-184.42 305.9,-180.31 295.71,-177.43 296.14,-184.42"/>
</g>
<!-- Node6&#45;&gt;Node6 -->
<g id="edge6" class="edge">
<title>Node6&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M334.17,-119.86C331.24,-129.54 340.18,-138 361,-138 374.01,-138 382.38,-134.7 386.12,-129.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="389.59,-130.31 387.83,-119.86 382.69,-129.13 389.59,-130.31"/>
</g>
<!-- Node7&#45;&gt;Node7 -->
<g id="edge8" class="edge">
<title>Node7&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M334.17,-41.86C331.24,-51.54 340.18,-60 361,-60 374.01,-60 382.38,-56.7 386.12,-51.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="389.59,-52.31 387.83,-41.86 382.69,-51.13 389.59,-52.31"/>
</g>
<!-- Node8&#45;&gt;Node8 -->
<!-- Node5&#45;&gt;Node9 -->
<g id="edge10" class="edge">
<title>Node8&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M334.17,-295.86C331.24,-305.54 340.18,-314 361,-314 374.01,-314 382.38,-310.7 386.12,-305.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="389.59,-306.31 387.83,-295.86 382.69,-305.13 389.59,-306.31"/>
<title>Node5&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M255.3,-205.35C270.18,-198.57 286.88,-190.96 302.38,-183.9"/>
<polygon fill="midnightblue" stroke="midnightblue" points="304.2,-186.91 311.85,-179.58 301.29,-180.54 304.2,-186.91"/>
</g>
<!-- Node10 -->
<g id="node10" class="node">
<title>Node10</title>
<g id="a_node10"><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="black" points="452,-117.5 452,-158.5 562,-158.5 562,-117.5 452,-117.5"/>
<text text-anchor="start" x="460" y="-146.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="460" y="-135.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="507" y="-124.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_lca</text>
<g id="a_node10"><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="black" points="303,-78.5 303,-119.5 413,-119.5 413,-78.5 303,-78.5"/>
<text text-anchor="start" x="311" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="311" y="-96.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="358" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::init</text>
</a>
</g>
</g>
<!-- Node9&#45;&gt;Node10 -->
<!-- Node5&#45;&gt;Node10 -->
<g id="edge12" class="edge">
<title>Node9&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M416.03,-162.37C424.5,-160.07 433.32,-157.69 441.98,-155.34"/>
<polygon fill="midnightblue" stroke="midnightblue" points="442.93,-158.71 451.67,-152.72 441.1,-151.95 442.93,-158.71"/>
<title>Node5&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M225.85,-205.13C242.61,-184.06 270.64,-151.49 300,-129 301.77,-127.65 303.6,-126.32 305.49,-125.03"/>
<polygon fill="midnightblue" stroke="midnightblue" points="307.46,-127.92 314,-119.59 303.69,-122.03 307.46,-127.92"/>
</g>
<!-- Node7&#45;&gt;Node7 -->
<g id="edge7" class="edge">
<title>Node7&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M330.8,-41.86C327.83,-51.54 336.9,-60 358,-60 371.19,-60 379.68,-56.7 383.46,-51.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="386.93,-52.32 385.2,-41.86 380.04,-51.12 386.93,-52.32"/>
</g>
<!-- Node8&#45;&gt;Node8 -->
<g id="edge9" class="edge">
<title>Node8&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M330.8,-295.86C327.83,-305.54 336.9,-314 358,-314 371.19,-314 379.68,-310.7 383.46,-305.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="386.93,-306.32 385.2,-295.86 380.04,-305.12 386.93,-306.32"/>
</g>
<!-- Node9&#45;&gt;Node9 -->
<g id="edge11" class="edge">
<title>Node9&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M330.8,-179.86C327.83,-189.54 336.9,-198 358,-198 371.19,-198 379.68,-194.7 383.46,-189.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="386.93,-190.32 385.2,-179.86 380.04,-189.12 386.93,-190.32"/>
</g>
<!-- Node11 -->
<g id="node11" class="node">
<title>Node11</title>
<g id="a_node11"><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="black" points="452,-195.5 452,-236.5 562,-236.5 562,-195.5 452,-195.5"/>
<text text-anchor="start" x="460" y="-224.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="460" y="-213.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="507" y="-202.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_size</text>
<g id="a_node11"><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="black" points="452,-39.5 452,-80.5 562,-80.5 562,-39.5 452,-39.5"/>
<text text-anchor="start" x="460" y="-68.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="460" y="-57.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="507" y="-46.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_lca</text>
</a>
</g>
</g>
<!-- Node9&#45;&gt;Node11 -->
<g id="edge14" class="edge">
<title>Node9&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M416.03,-191.63C424.5,-193.93 433.32,-196.31 441.98,-198.66"/>
<polygon fill="midnightblue" stroke="midnightblue" points="441.1,-202.05 451.67,-201.28 442.93,-195.29 441.1,-202.05"/>
</g>
<!-- Node10&#45;&gt;Node10 -->
<!-- Node10&#45;&gt;Node11 -->
<g id="edge13" class="edge">
<title>Node10&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M480.17,-158.86C477.24,-168.54 486.18,-177 507,-177 520.01,-177 528.38,-173.7 532.12,-168.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="535.59,-169.31 533.83,-158.86 528.69,-168.13 535.59,-169.31"/>
<title>Node10&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M413.32,-84.59C422.67,-82.11 432.46,-79.51 442.03,-76.97"/>
<polygon fill="midnightblue" stroke="midnightblue" points="443.14,-80.3 451.9,-74.35 441.34,-73.53 443.14,-80.3"/>
</g>
<!-- Node12 -->
<g id="node12" class="node">
<title>Node12</title>
<g id="a_node12"><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="black" points="452,-117.5 452,-158.5 562,-158.5 562,-117.5 452,-117.5"/>
<text text-anchor="start" x="460" y="-146.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="460" y="-135.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="507" y="-124.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_size</text>
</a>
</g>
</g>
<!-- Node10&#45;&gt;Node12 -->
<g id="edge15" class="edge">
<title>Node10&#45;&gt;Node12</title>
<path fill="none" stroke="midnightblue" d="M413.32,-113.41C422.67,-115.89 432.46,-118.49 442.03,-121.03"/>
<polygon fill="midnightblue" stroke="midnightblue" points="441.34,-124.47 451.9,-123.65 443.14,-117.7 441.34,-124.47"/>
</g>
<!-- Node11&#45;&gt;Node11 -->
<g id="edge15" class="edge">
<g id="edge14" class="edge">
<title>Node11&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M480.17,-236.86C477.24,-246.54 486.18,-255 507,-255 520.01,-255 528.38,-251.7 532.12,-246.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="535.59,-247.31 533.83,-236.86 528.69,-246.13 535.59,-247.31"/>
<path fill="none" stroke="midnightblue" d="M479.8,-80.86C476.83,-90.54 485.9,-99 507,-99 520.19,-99 528.68,-95.7 532.46,-90.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="535.93,-91.32 534.2,-80.86 529.04,-90.12 535.93,-91.32"/>
</g>
<!-- Node12&#45;&gt;Node12 -->
<g id="edge16" class="edge">
<title>Node12&#45;&gt;Node12</title>
<path fill="none" stroke="midnightblue" d="M479.8,-158.86C476.83,-168.54 485.9,-177 507,-177 520.19,-177 528.68,-173.7 532.46,-168.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="535.93,-169.32 534.2,-158.86 529.04,-168.12 535.93,-169.32"/>
</g>
<!-- Node14 -->
<g id="node14" class="node">
<title>Node14</title>
<g id="a_node14"><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="black" points="306,-389.5 306,-430.5 416,-430.5 416,-389.5 306,-389.5"/>
<text text-anchor="start" x="314" y="-418.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="314" y="-407.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="361" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::chain_query</text>
<polygon fill="white" stroke="black" points="303,-332.5 303,-373.5 413,-373.5 413,-332.5 303,-332.5"/>
<text text-anchor="start" x="311" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="311" y="-350.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="358" y="-339.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::chain_query</text>
</a>
</g>
</g>
<!-- Node13&#45;&gt;Node14 -->
<g id="edge18" class="edge">
<g id="edge19" class="edge">
<title>Node13&#45;&gt;Node14</title>
<path fill="none" stroke="midnightblue" d="M256.31,-459.38C272.39,-451.72 290.8,-442.95 307.6,-434.95"/>
<polygon fill="midnightblue" stroke="midnightblue" points="309.22,-438.06 316.75,-430.6 306.21,-431.74 309.22,-438.06"/>
<path fill="none" stroke="midnightblue" d="M264.32,-334.72C273.67,-336.56 283.46,-338.49 293.03,-340.38"/>
<polygon fill="midnightblue" stroke="midnightblue" points="292.42,-343.83 302.9,-342.33 293.77,-336.96 292.42,-343.83"/>
</g>
<!-- Node16 -->
<g id="node16" class="node">
<title>Node16</title>
<g id="a_node16"><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="black" points="306,-459.5 306,-500.5 416,-500.5 416,-459.5 306,-459.5"/>
<text text-anchor="start" x="314" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="314" y="-477.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="361" y="-466.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lca</text>
<polygon fill="white" stroke="black" points="303,-392.5 303,-433.5 413,-433.5 413,-392.5 303,-392.5"/>
<text text-anchor="start" x="311" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="311" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="358" y="-399.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lca</text>
</a>
</g>
</g>
<!-- Node13&#45;&gt;Node16 -->
<g id="edge21" class="edge">
<g id="edge22" class="edge">
<title>Node13&#45;&gt;Node16</title>
<path fill="none" stroke="midnightblue" d="M267.32,-480C276.57,-480 286.25,-480 295.73,-480"/>
<polygon fill="midnightblue" stroke="midnightblue" points="295.9,-483.5 305.9,-480 295.9,-476.5 295.9,-483.5"/>
<path fill="none" stroke="midnightblue" d="M242.03,-344.66C249.26,-349.36 256.91,-354.34 264,-359 280.07,-369.56 283.47,-373.18 300,-383 302.48,-384.47 305.04,-385.95 307.63,-387.43"/>
<polygon fill="midnightblue" stroke="midnightblue" points="306.1,-390.58 316.54,-392.37 309.5,-384.46 306.1,-390.58"/>
</g>
<!-- Node14&#45;&gt;Node5 -->
<g id="edge19" class="edge">
<title>Node14&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M397.6,-389.48C416.89,-378.36 440.93,-364.51 461.46,-352.67"/>
<polygon fill="midnightblue" stroke="midnightblue" points="463.4,-355.59 470.31,-347.57 459.9,-349.53 463.4,-355.59"/>
<!-- Node14&#45;&gt;Node6 -->
<g id="edge20" class="edge">
<title>Node14&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M399.11,-332.46C404.82,-329.37 410.59,-326.16 416,-323 433.07,-313.04 451.48,-301.34 467.18,-291.08"/>
<polygon fill="midnightblue" stroke="midnightblue" points="469.16,-293.96 475.59,-285.54 465.31,-288.12 469.16,-293.96"/>
</g>
<!-- Node15 -->
<g id="node15" class="node">
<title>Node15</title>
<g id="a_node15"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="477.5,-400.5 477.5,-419.5 536.5,-419.5 536.5,-400.5 477.5,-400.5"/>
<text text-anchor="middle" x="507" y="-407.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::swap</text>
<g id="a_node15"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap#" xlink:title=" ">
<polygon fill="white" stroke="black" points="477.5,-343.5 477.5,-362.5 536.5,-362.5 536.5,-343.5 477.5,-343.5"/>
<text text-anchor="middle" x="507" y="-350.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::swap</text>
</a>
</g>
</g>
<!-- Node14&#45;&gt;Node15 -->
<g id="edge20" class="edge">
<g id="edge21" class="edge">
<title>Node14&#45;&gt;Node15</title>
<path fill="none" stroke="midnightblue" d="M416.03,-410C432.89,-410 451.15,-410 466.79,-410"/>
<polygon fill="midnightblue" stroke="midnightblue" points="467.15,-413.5 477.15,-410 467.15,-406.5 467.15,-413.5"/>
<path fill="none" stroke="midnightblue" d="M413.32,-353C431.17,-353 450.63,-353 467.1,-353"/>
<polygon fill="midnightblue" stroke="midnightblue" points="467.44,-356.5 477.44,-353 467.44,-349.5 467.44,-356.5"/>
</g>
<!-- Node17 -->
<g id="node17" class="node">
<title>Node17</title>
<g id="a_node17"><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="black" points="452,-459.5 452,-500.5 562,-500.5 562,-459.5 452,-459.5"/>
<text text-anchor="start" x="460" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="460" y="-477.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="507" y="-466.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lift</text>
<polygon fill="white" stroke="black" points="452,-392.5 452,-433.5 562,-433.5 562,-392.5 452,-392.5"/>
<text text-anchor="start" x="460" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="460" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="507" y="-399.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lift</text>
</a>
</g>
</g>
<!-- Node16&#45;&gt;Node17 -->
<g id="edge22" class="edge">
<g id="edge23" class="edge">
<title>Node16&#45;&gt;Node17</title>
<path fill="none" stroke="midnightblue" d="M416.03,-480C424.31,-480 432.94,-480 441.42,-480"/>
<polygon fill="midnightblue" stroke="midnightblue" points="441.67,-483.5 451.67,-480 441.67,-476.5 441.67,-483.5"/>
<path fill="none" stroke="midnightblue" d="M413.32,-413C422.57,-413 432.25,-413 441.73,-413"/>
<polygon fill="midnightblue" stroke="midnightblue" points="441.9,-416.5 451.9,-413 441.9,-409.5 441.9,-416.5"/>
</g>
<!-- Node18&#45;&gt;Node19 -->
<g id="edge24" class="edge">
<g id="edge25" class="edge">
<title>Node18&#45;&gt;Node19</title>
<path fill="none" stroke="midnightblue" d="M260.57,-304.58C275.08,-310.69 291.13,-317.27 306,-323 311.22,-325.01 316.75,-327.05 322.2,-329.02"/>
<polygon fill="midnightblue" stroke="midnightblue" points="321.26,-332.4 331.86,-332.45 323.61,-325.8 321.26,-332.4"/>
<path fill="none" stroke="midnightblue" d="M264.32,-528.87C277.36,-531 291.26,-533.27 304.22,-535.38"/>
<polygon fill="midnightblue" stroke="midnightblue" points="303.95,-538.89 314.38,-537.04 305.08,-531.98 303.95,-538.89"/>
</g>
<!-- Node21 -->
<g id="node21" class="node">
<title>Node21</title>
<g id="a_node21"><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="black" points="306,-519.5 306,-560.5 416,-560.5 416,-519.5 306,-519.5"/>
<text text-anchor="start" x="314" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="314" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="361" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::update</text>
<polygon fill="white" stroke="black" points="303,-597.5 303,-638.5 413,-638.5 413,-597.5 303,-597.5"/>
<text text-anchor="start" x="311" y="-626.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="311" y="-615.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="358" y="-604.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::update</text>
</a>
</g>
</g>
<!-- Node20&#45;&gt;Node21 -->
<g id="edge27" class="edge">
<g id="edge28" class="edge">
<title>Node20&#45;&gt;Node21</title>
<path fill="none" stroke="midnightblue" d="M267.32,-540C276.57,-540 286.25,-540 295.73,-540"/>
<polygon fill="midnightblue" stroke="midnightblue" points="295.9,-543.5 305.9,-540 295.9,-536.5 295.9,-543.5"/>
<path fill="none" stroke="midnightblue" d="M264.32,-618C273.57,-618 283.25,-618 292.73,-618"/>
<polygon fill="midnightblue" stroke="midnightblue" points="292.9,-621.5 302.9,-618 292.9,-614.5 292.9,-621.5"/>
</g>
<!-- Node22&#45;&gt;Node3 -->
<g id="edge29" class="edge">
<g id="edge30" class="edge">
<title>Node22&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M118.18,-420C126.39,-420 136.26,-420 146.47,-420"/>
<polygon fill="midnightblue" stroke="midnightblue" points="146.73,-423.5 156.73,-420 146.73,-416.5 146.73,-423.5"/>
<path fill="none" stroke="midnightblue" d="M108.88,-504.15C124.52,-491.19 152.65,-467.88 174.95,-449.39"/>
<polygon fill="midnightblue" stroke="midnightblue" points="177.41,-451.9 182.87,-442.83 172.94,-446.51 177.41,-451.9"/>
</g>
<!-- Node22&#45;&gt;Node4 -->
<g id="edge30" class="edge">
<g id="edge32" class="edge">
<title>Node22&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M110.27,-410.2C113.18,-407.5 115.99,-404.38 118,-401 152.45,-343.23 123.6,-314 154,-254 161.3,-239.6 172.17,-225.59 182.47,-214.07"/>
<polygon fill="midnightblue" stroke="midnightblue" points="185.24,-216.23 189.46,-206.51 180.1,-211.48 185.24,-216.23"/>
<path fill="none" stroke="midnightblue" d="M97.67,-523.68C100.02,-549.34 110.35,-619.13 154,-648 194.78,-674.97 224.88,-677.32 264,-648 309.58,-613.85 271.38,-574.25 300,-525 309.54,-508.59 324.59,-493.28 336.83,-482.37"/>
<polygon fill="midnightblue" stroke="midnightblue" points="339.45,-484.73 344.75,-475.56 334.89,-479.42 339.45,-484.73"/>
</g>
<!-- Node22&#45;&gt;Node12 -->
<!-- Node22&#45;&gt;Node5 -->
<g id="edge31" class="edge">
<title>Node22&#45;&gt;Node12</title>
<path fill="none" stroke="midnightblue" d="M113.61,-410.34C124.8,-404.06 140.01,-395.97 154,-390 159.04,-387.85 164.41,-385.79 169.76,-383.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="171,-387.13 179.3,-380.55 168.7,-380.52 171,-387.13"/>
<title>Node22&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M107.77,-504.15C111.56,-500.12 115.49,-495.18 118,-490 156.54,-410.26 117.37,-374.64 154,-294 160.54,-279.61 170.77,-265.61 180.58,-254.09"/>
<polygon fill="midnightblue" stroke="midnightblue" points="183.26,-256.34 187.25,-246.53 178.01,-251.71 183.26,-256.34"/>
</g>
<!-- Node22&#45;&gt;Node13 -->
<g id="edge32" class="edge">
<g id="edge33" class="edge">
<title>Node22&#45;&gt;Node13</title>
<path fill="none" stroke="midnightblue" d="M115.06,-429.51C127.88,-436.25 145.74,-445.65 162.57,-454.51"/>
<polygon fill="midnightblue" stroke="midnightblue" points="161.3,-457.8 171.78,-459.36 164.56,-451.6 161.3,-457.8"/>
<path fill="none" stroke="midnightblue" d="M106.88,-504.37C110.73,-500.22 114.95,-495.14 118,-490 141.67,-450.09 131.28,-432.46 154,-392 161.8,-378.12 172.35,-364.11 182.06,-352.45"/>
<polygon fill="midnightblue" stroke="midnightblue" points="184.78,-354.66 188.61,-344.78 179.45,-350.12 184.78,-354.66"/>
</g>
<!-- Node22&#45;&gt;Node18 -->
<g id="edge33" class="edge">
<g id="edge34" class="edge">
<title>Node22&#45;&gt;Node18</title>
<path fill="none" stroke="midnightblue" d="M108.52,-410.34C111.71,-407.46 115.1,-404.21 118,-401 136.11,-380.94 137.31,-373.25 154,-352 164.36,-338.81 176.21,-324.54 186.42,-312.49"/>
<polygon fill="midnightblue" stroke="midnightblue" points="189.37,-314.43 193.19,-304.55 184.04,-309.89 189.37,-314.43"/>
<path fill="none" stroke="midnightblue" d="M118.14,-515.14C125.62,-515.55 134.48,-516.03 143.67,-516.52"/>
<polygon fill="midnightblue" stroke="midnightblue" points="143.55,-520.02 153.72,-517.07 143.92,-513.03 143.55,-520.02"/>
</g>
<!-- Node22&#45;&gt;Node19 -->
<g id="edge34" class="edge">
<g id="edge35" class="edge">
<title>Node22&#45;&gt;Node19</title>
<path fill="none" stroke="midnightblue" d="M97.2,-429.57C98.34,-457.13 105.84,-536.78 154,-570 196.44,-599.27 230.3,-602.89 270,-570 336.19,-515.17 259.45,-452.25 306,-380 312.07,-370.58 321.38,-362.81 330.57,-356.81"/>
<polygon fill="midnightblue" stroke="midnightblue" points="332.47,-359.75 339.23,-351.6 328.86,-353.75 332.47,-359.75"/>
<path fill="none" stroke="midnightblue" d="M96.79,-523.76C96.75,-553.48 101.18,-643.21 154,-681 193.76,-709.44 223.67,-708.63 264,-681 300.56,-655.95 273.48,-623.51 300,-588 308.5,-576.62 320.68,-566.67 331.61,-559.13"/>
<polygon fill="midnightblue" stroke="midnightblue" points="333.56,-562.03 340,-553.61 329.72,-556.18 333.56,-562.03"/>
</g>
<!-- Node22&#45;&gt;Node20 -->
<g id="edge35" class="edge">
<g id="edge36" class="edge">
<title>Node22&#45;&gt;Node20</title>
<path fill="none" stroke="midnightblue" d="M101.01,-429.55C108.89,-447.33 127.91,-485.92 154,-510 155.27,-511.17 156.6,-512.31 157.97,-513.42"/>
<polygon fill="midnightblue" stroke="midnightblue" points="156.05,-516.36 166.2,-519.41 160.17,-510.7 156.05,-516.36"/>
<path fill="none" stroke="midnightblue" d="M103.57,-523.71C113.42,-537.84 133.12,-564.4 154,-583 157.33,-585.96 160.93,-588.85 164.64,-591.62"/>
<polygon fill="midnightblue" stroke="midnightblue" points="162.69,-594.53 172.87,-597.47 166.74,-588.82 162.69,-594.53"/>
</g>
<!-- Node23&#45;&gt;Node3 -->
<g id="edge37" class="edge">
<g id="edge38" class="edge">
<title>Node23&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M118.18,-389.06C126.56,-391.85 136.67,-395.22 147.11,-398.7"/>
<polygon fill="midnightblue" stroke="midnightblue" points="146.14,-402.07 156.73,-401.91 148.35,-395.43 146.14,-402.07"/>
<path fill="none" stroke="midnightblue" d="M118.14,-402.57C125.62,-404.19 134.48,-406.1 143.67,-408.09"/>
<polygon fill="midnightblue" stroke="midnightblue" points="143.21,-411.57 153.72,-410.26 144.69,-404.73 143.21,-411.57"/>
</g>
<!-- Node23&#45;&gt;Node4 -->
<g id="edge38" class="edge">
<g id="edge40" class="edge">
<title>Node23&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M109.65,-372.48C112.71,-369.7 115.75,-366.46 118,-363 145.84,-320.25 129.17,-298.57 154,-254 161.86,-239.9 172.84,-225.94 183.06,-214.38"/>
<polygon fill="midnightblue" stroke="midnightblue" points="185.83,-216.54 189.97,-206.78 180.66,-211.82 185.83,-216.54"/>
<path fill="none" stroke="midnightblue" d="M98.9,-388.26C103.71,-366.66 118.57,-314.98 154,-294 196.06,-269.09 225.58,-263.76 264,-294 317.53,-336.14 255.48,-391.43 300,-443 302.82,-446.27 306.18,-449.08 309.83,-451.5"/>
<polygon fill="midnightblue" stroke="midnightblue" points="308.33,-454.67 318.77,-456.45 311.72,-448.54 308.33,-454.67"/>
</g>
<!-- Node23&#45;&gt;Node12 -->
<!-- Node23&#45;&gt;Node5 -->
<g id="edge39" class="edge">
<title>Node23&#45;&gt;Node12</title>
<path fill="none" stroke="midnightblue" d="M118.18,-379.96C125.65,-379.24 134.5,-378.38 143.72,-377.49"/>
<polygon fill="midnightblue" stroke="midnightblue" points="144.21,-380.96 153.83,-376.52 143.54,-373.99 144.21,-380.96"/>
<title>Node23&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M98.93,-388.33C104.13,-364.39 120.35,-301.36 154,-261 156.36,-258.17 159,-255.5 161.82,-252.97"/>
<polygon fill="midnightblue" stroke="midnightblue" points="164.04,-255.68 169.61,-246.67 159.63,-250.24 164.04,-255.68"/>
</g>
<!-- Node23&#45;&gt;Node13 -->
<g id="edge40" class="edge">
<g id="edge41" class="edge">
<title>Node23&#45;&gt;Node13</title>
<path fill="none" stroke="midnightblue" d="M108.52,-391.66C111.71,-394.54 115.1,-397.79 118,-401 136.11,-421.06 133.52,-432.37 154,-450 155.34,-451.15 156.73,-452.28 158.16,-453.38"/>
<polygon fill="midnightblue" stroke="midnightblue" points="156.52,-456.5 166.73,-459.33 160.52,-450.75 156.52,-456.5"/>
<path fill="none" stroke="midnightblue" d="M110.99,-388.29C122.49,-380.34 139.23,-368.84 154,-359 158.31,-356.13 162.82,-353.16 167.33,-350.21"/>
<polygon fill="midnightblue" stroke="midnightblue" points="169.47,-352.99 175.93,-344.6 165.64,-347.13 169.47,-352.99"/>
</g>
<!-- Node23&#45;&gt;Node18 -->
<g id="edge41" class="edge">
<g id="edge42" class="edge">
<title>Node23&#45;&gt;Node18</title>
<path fill="none" stroke="midnightblue" d="M108.41,-372.24C111.6,-369.36 115.02,-366.13 118,-363 135.42,-344.7 134.97,-335.62 154,-319 157.39,-316.04 161.06,-313.18 164.84,-310.45"/>
<polygon fill="midnightblue" stroke="midnightblue" points="166.97,-313.23 173.25,-304.69 163.02,-307.45 166.97,-313.23"/>
<path fill="none" stroke="midnightblue" d="M105.71,-407.57C121.99,-425.47 157.61,-464.62 182.2,-491.64"/>
<polygon fill="midnightblue" stroke="midnightblue" points="179.81,-494.22 189.13,-499.26 184.99,-489.51 179.81,-494.22"/>
</g>
<!-- Node23&#45;&gt;Node19 -->
<g id="edge42" class="edge">
<g id="edge43" class="edge">
<title>Node23&#45;&gt;Node19</title>
<path fill="none" stroke="midnightblue" d="M111.26,-372.23C122.37,-365.2 138.47,-356.24 154,-352 204.74,-338.15 265.07,-336.9 307.29,-338.35"/>
<polygon fill="midnightblue" stroke="midnightblue" points="307.21,-341.85 317.34,-338.76 307.49,-334.86 307.21,-341.85"/>
<path fill="none" stroke="midnightblue" d="M118.19,-389.87C152.23,-378.31 219.72,-361.66 264,-392 300.56,-417.05 276.13,-447.66 300,-485 310.22,-500.99 325.24,-516.32 337.3,-527.34"/>
<polygon fill="midnightblue" stroke="midnightblue" points="335.28,-530.23 345.08,-534.24 339.92,-524.99 335.28,-530.23"/>
</g>
<!-- Node23&#45;&gt;Node20 -->
<g id="edge43" class="edge">
<g id="edge44" class="edge">
<title>Node23&#45;&gt;Node20</title>
<path fill="none" stroke="midnightblue" d="M109.65,-391.52C112.71,-394.3 115.75,-397.54 118,-401 145.84,-443.75 121.03,-471.07 154,-510 154.83,-510.98 155.71,-511.94 156.62,-512.87"/>
<polygon fill="midnightblue" stroke="midnightblue" points="154.35,-515.54 164.19,-519.47 158.95,-510.26 154.35,-515.54"/>
<path fill="none" stroke="midnightblue" d="M100.77,-407.54C105.02,-418.31 112.09,-436.38 118,-452 134.41,-495.4 131.28,-509.54 154,-550 161.8,-563.88 172.35,-577.89 182.06,-589.55"/>
<polygon fill="midnightblue" stroke="midnightblue" points="179.45,-591.88 188.61,-597.22 184.78,-587.34 179.45,-591.88"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

@@ -4,17 +4,17 @@
<!-- Generated by graphviz version 2.50.0 (20211204.2007)
-->
<!-- Title: main Pages: 1 -->
<svg width="570pt" height="601pt"
viewBox="0.00 0.00 570.00 601.42" 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 597.42)">
<svg width="570pt" height="710pt"
viewBox="0.00 0.00 570.00 710.08" 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 706.08)">
<title>main</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-597.42 566,-597.42 566,4 -4,4"/>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-706.08 566,-706.08 566,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title=" ">
<polygon fill="#bfbfbf" stroke="black" points="0,-372.5 0,-391.5 38,-391.5 38,-372.5 0,-372.5"/>
<text text-anchor="middle" x="19" y="-379.5" font-family="Helvetica,sans-Serif" font-size="10.00">main</text>
<polygon fill="#bfbfbf" stroke="black" points="0,-461.5 0,-480.5 38,-480.5 38,-461.5 0,-461.5"/>
<text text-anchor="middle" x="19" y="-468.5" font-family="Helvetica,sans-Serif" font-size="10.00">main</text>
</a>
</g>
</g>
@@ -22,489 +22,495 @@
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d2/de9/heavy__light__decomposition_8cpp.html#a34b8683a2b429de5cce57e6d733ec817" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="74,-334.5 74,-353.5 118,-353.5 118,-334.5 74,-334.5"/>
<text text-anchor="middle" x="96" y="-341.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_1</text>
<polygon fill="white" stroke="black" points="74,-461.5 74,-480.5 118,-480.5 118,-461.5 74,-461.5"/>
<text text-anchor="middle" x="96" y="-468.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_1</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M38.16,-372.8C46.89,-368.37 57.56,-362.97 67.29,-358.04"/>
<polygon fill="midnightblue" stroke="midnightblue" points="68.89,-361.15 76.23,-353.51 65.73,-354.91 68.89,-361.15"/>
<path fill="none" stroke="midnightblue" d="M38.16,-471C45.8,-471 54.92,-471 63.59,-471"/>
<polygon fill="midnightblue" stroke="midnightblue" points="63.82,-474.5 73.82,-471 63.82,-467.5 63.82,-474.5"/>
</g>
<!-- Node22 -->
<g id="node22" class="node">
<title>Node22</title>
<g id="a_node22"><a xlink:href="../../d2/de9/heavy__light__decomposition_8cpp.html#a458410412185a5f09199deaff7157a8d" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="74,-410.5 74,-429.5 118,-429.5 118,-410.5 74,-410.5"/>
<text text-anchor="middle" x="96" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_2</text>
<polygon fill="white" stroke="black" points="74,-504.5 74,-523.5 118,-523.5 118,-504.5 74,-504.5"/>
<text text-anchor="middle" x="96" y="-511.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_2</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node22 -->
<g id="edge28" class="edge">
<g id="edge29" class="edge">
<title>Node1&#45;&gt;Node22</title>
<path fill="none" stroke="midnightblue" d="M38.16,-391.2C46.89,-395.63 57.56,-401.03 67.29,-405.96"/>
<polygon fill="midnightblue" stroke="midnightblue" points="65.73,-409.09 76.23,-410.49 68.89,-402.85 65.73,-409.09"/>
<path fill="none" stroke="midnightblue" d="M36.64,-480.54C46.35,-486.11 58.8,-493.25 69.7,-499.5"/>
<polygon fill="midnightblue" stroke="midnightblue" points="67.99,-502.55 78.4,-504.48 71.47,-496.47 67.99,-502.55"/>
</g>
<!-- Node23 -->
<g id="node23" class="node">
<title>Node23</title>
<g id="a_node23"><a xlink:href="../../d2/de9/heavy__light__decomposition_8cpp.html#af31ec5409537703d9c8a47350386b32a" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="74,-372.5 74,-391.5 118,-391.5 118,-372.5 74,-372.5"/>
<text text-anchor="middle" x="96" y="-379.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_3</text>
<polygon fill="white" stroke="black" points="74,-388.5 74,-407.5 118,-407.5 118,-388.5 74,-388.5"/>
<text text-anchor="middle" x="96" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_3</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node23 -->
<g id="edge36" class="edge">
<g id="edge37" class="edge">
<title>Node1&#45;&gt;Node23</title>
<path fill="none" stroke="midnightblue" d="M38.16,-382C45.8,-382 54.92,-382 63.59,-382"/>
<polygon fill="midnightblue" stroke="midnightblue" points="63.82,-385.5 73.82,-382 63.82,-378.5 63.82,-385.5"/>
<path fill="none" stroke="midnightblue" d="M29.8,-461.46C41.87,-449.72 62.56,-429.57 77.4,-415.13"/>
<polygon fill="midnightblue" stroke="midnightblue" points="80.23,-417.26 84.95,-407.78 75.35,-412.25 80.23,-417.26"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a79ab4601c4a95c0902ac04e779e5f54d" target="_top" xlink:title="Adds an undirected edge from node u to node v in the tree.">
<polygon fill="white" stroke="black" points="157,-399.5 157,-440.5 267,-440.5 267,-399.5 157,-399.5"/>
<text text-anchor="start" x="165" y="-428.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="165" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="212" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::add_edge</text>
<polygon fill="white" stroke="black" points="154,-401.5 154,-442.5 264,-442.5 264,-401.5 154,-401.5"/>
<text text-anchor="start" x="162" y="-430.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="162" y="-419.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="209" y="-408.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::add_edge</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<title>Node2&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M107.86,-353.84C118.98,-363.65 137,-378.82 154,-390 156.17,-391.42 158.41,-392.84 160.69,-394.23"/>
<polygon fill="midnightblue" stroke="midnightblue" points="159.26,-397.44 169.66,-399.47 162.79,-391.4 159.26,-397.44"/>
<path fill="none" stroke="midnightblue" d="M118.14,-461.67C127.86,-457.38 139.91,-452.06 151.98,-446.73"/>
<polygon fill="midnightblue" stroke="midnightblue" points="153.45,-449.9 161.19,-442.66 150.63,-443.5 153.45,-449.9"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" 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="black" points="157,-165.5 157,-206.5 267,-206.5 267,-165.5 157,-165.5"/>
<text text-anchor="start" x="165" y="-194.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="165" y="-183.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="212" y="-172.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::init</text>
<g id="a_node4"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/push_back#" xlink:title=" ">
<polygon fill="white" stroke="black" points="300,-456.5 300,-475.5 416,-475.5 416,-456.5 300,-456.5"/>
<text text-anchor="middle" x="358" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::push_back</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<g id="edge17" class="edge">
<title>Node2&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M99.41,-334.3C105.35,-312.01 122.56,-256.35 154,-221 156.62,-218.06 159.54,-215.28 162.64,-212.68"/>
<polygon fill="midnightblue" stroke="midnightblue" points="164.83,-215.42 170.65,-206.57 160.58,-209.85 164.83,-215.42"/>
<path fill="none" stroke="midnightblue" d="M118.28,-470.59C155.27,-469.88 232.91,-468.39 289.64,-467.3"/>
<polygon fill="midnightblue" stroke="midnightblue" points="290.04,-470.79 299.97,-467.1 289.91,-463.79 290.04,-470.79"/>
</g>
<!-- Node12 -->
<g id="node12" class="node">
<title>Node12</title>
<g id="a_node12"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/push_back.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="154,-361.5 154,-380.5 270,-380.5 270,-361.5 154,-361.5"/>
<text text-anchor="middle" x="212" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::push_back</text>
<!-- Node5 -->
<g id="node5" class="node">
<title>Node5</title>
<g id="a_node5"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" 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="black" points="154,-205.5 154,-246.5 264,-246.5 264,-205.5 154,-205.5"/>
<text text-anchor="start" x="162" y="-234.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="162" y="-223.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="209" y="-212.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::init</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node12 -->
<g id="edge16" class="edge">
<title>Node2&#45;&gt;Node12</title>
<path fill="none" stroke="midnightblue" d="M118.18,-349.02C130.1,-351.84 145.55,-355.5 160.41,-359.02"/>
<polygon fill="midnightblue" stroke="midnightblue" points="160.02,-362.52 170.55,-361.42 161.63,-355.71 160.02,-362.52"/>
<!-- Node2&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<title>Node2&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M101.13,-461.14C105.56,-450.39 112.69,-432.62 118,-417 136.34,-363.07 127.8,-344.58 154,-294 161.32,-279.86 171.8,-265.81 181.57,-254.19"/>
<polygon fill="midnightblue" stroke="midnightblue" points="184.28,-256.41 188.18,-246.56 178.99,-251.82 184.28,-256.41"/>
</g>
<!-- Node13 -->
<g id="node13" class="node">
<title>Node13</title>
<g id="a_node13"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a4dfbf5d9df825eeb63b294c6849bdcab" target="_top" xlink:title="This function returns the sum of node values in the simple path from from node_1 to node_2.">
<polygon fill="white" stroke="black" points="157,-459.5 157,-500.5 267,-500.5 267,-459.5 157,-459.5"/>
<text text-anchor="start" x="165" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="165" y="-477.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="212" y="-466.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::query</text>
<polygon fill="white" stroke="black" points="154,-303.5 154,-344.5 264,-344.5 264,-303.5 154,-303.5"/>
<text text-anchor="start" x="162" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="162" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="209" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::query</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node13 -->
<g id="edge17" class="edge">
<g id="edge18" class="edge">
<title>Node2&#45;&gt;Node13</title>
<path fill="none" stroke="midnightblue" d="M109.48,-353.63C112.54,-356.42 115.62,-359.62 118,-363 142.1,-397.21 125.8,-419.08 154,-450 154.89,-450.98 155.82,-451.93 156.78,-452.85"/>
<polygon fill="midnightblue" stroke="midnightblue" points="154.8,-455.75 164.73,-459.43 159.26,-450.36 154.8,-455.75"/>
<path fill="none" stroke="midnightblue" d="M103.7,-461.41C114.22,-446.44 135.32,-416.67 154,-392 163.91,-378.91 175.16,-364.66 184.81,-352.6"/>
<polygon fill="midnightblue" stroke="midnightblue" points="187.67,-354.63 191.21,-344.64 182.21,-350.24 187.67,-354.63"/>
</g>
<!-- Node18 -->
<g id="node18" class="node">
<title>Node18</title>
<g id="a_node18"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a04cd96efaba147b19d3afc769b90ff70" target="_top" xlink:title="Set the values for all the nodes.">
<polygon fill="white" stroke="black" points="157,-263.5 157,-304.5 267,-304.5 267,-263.5 157,-263.5"/>
<text text-anchor="start" x="165" y="-292.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="165" y="-281.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="212" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::set_node_val</text>
<polygon fill="white" stroke="black" points="154,-499.5 154,-540.5 264,-540.5 264,-499.5 154,-499.5"/>
<text text-anchor="start" x="162" y="-528.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="162" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="209" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::set_node_val</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node18 -->
<g id="edge23" class="edge">
<g id="edge24" class="edge">
<title>Node2&#45;&gt;Node18</title>
<path fill="none" stroke="midnightblue" d="M115.06,-334.49C127.88,-327.75 145.74,-318.35 162.57,-309.49"/>
<polygon fill="midnightblue" stroke="midnightblue" points="164.56,-312.4 171.78,-304.64 161.3,-306.2 164.56,-312.4"/>
<path fill="none" stroke="midnightblue" d="M118.14,-480.33C127.86,-484.62 139.91,-489.94 151.98,-495.27"/>
<polygon fill="midnightblue" stroke="midnightblue" points="150.63,-498.5 161.19,-499.34 153.45,-492.1 150.63,-498.5"/>
</g>
<!-- Node19 -->
<g id="node19" class="node">
<title>Node19</title>
<g id="a_node19"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="317.5,-332.5 317.5,-351.5 404.5,-351.5 404.5,-332.5 317.5,-332.5"/>
<text text-anchor="middle" x="361" y="-339.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
<g id="a_node19"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size#" xlink:title=" ">
<polygon fill="white" stroke="black" points="314.5,-534.5 314.5,-553.5 401.5,-553.5 401.5,-534.5 314.5,-534.5"/>
<text text-anchor="middle" x="358" y="-541.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node19 -->
<g id="edge25" class="edge">
<g id="edge26" class="edge">
<title>Node2&#45;&gt;Node19</title>
<path fill="none" stroke="midnightblue" d="M99.69,-334.37C105.7,-314.95 122.24,-271.48 154,-254 199.17,-229.14 225.91,-227.27 270,-254 299.58,-271.93 279.86,-300.35 306,-323 307.94,-324.68 310.04,-326.21 312.24,-327.62"/>
<polygon fill="midnightblue" stroke="midnightblue" points="310.69,-330.75 321.15,-332.39 313.99,-324.58 310.69,-330.75"/>
<path fill="none" stroke="midnightblue" d="M105.9,-480.55C109.76,-484.85 114.25,-490.06 118,-495 135.66,-518.27 128.3,-536.11 154,-550 205.25,-577.71 274.93,-567.14 317.88,-556.17"/>
<polygon fill="midnightblue" stroke="midnightblue" points="318.92,-559.52 327.67,-553.55 317.11,-552.76 318.92,-559.52"/>
</g>
<!-- Node20 -->
<g id="node20" class="node">
<title>Node20</title>
<g id="a_node20"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a9f1cb54ed09fde931bf3220d75ee4c57" target="_top" xlink:title="This function updates the value at node with val.">
<polygon fill="white" stroke="black" points="157,-519.5 157,-560.5 267,-560.5 267,-519.5 157,-519.5"/>
<text text-anchor="start" x="165" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="165" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="212" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::update</text>
<polygon fill="white" stroke="black" points="154,-597.5 154,-638.5 264,-638.5 264,-597.5 154,-597.5"/>
<text text-anchor="start" x="162" y="-626.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="162" y="-615.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="209" y="-604.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::update</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node20 -->
<g id="edge26" class="edge">
<g id="edge27" class="edge">
<title>Node2&#45;&gt;Node20</title>
<path fill="none" stroke="midnightblue" d="M110.27,-353.8C113.18,-356.5 115.99,-359.62 118,-363 152.45,-420.77 112.59,-457 154,-510 154.69,-510.88 155.41,-511.74 156.16,-512.57"/>
<polygon fill="midnightblue" stroke="midnightblue" points="153.91,-515.26 163.62,-519.5 158.67,-510.13 153.91,-515.26"/>
<path fill="none" stroke="midnightblue" d="M106.79,-480.69C110.63,-484.85 114.86,-489.91 118,-495 140.22,-530.95 127.04,-550.46 154,-583 156.35,-585.83 158.99,-588.52 161.8,-591.04"/>
<polygon fill="midnightblue" stroke="midnightblue" points="159.61,-593.77 169.58,-597.35 164.02,-588.34 159.61,-593.77"/>
</g>
<!-- Node5 -->
<g id="node5" class="node">
<title>Node5</title>
<g id="a_node5"><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="black" points="452,-306.5 452,-347.5 562,-347.5 562,-306.5 452,-306.5"/>
<text text-anchor="start" x="460" y="-335.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="460" y="-324.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="507" y="-313.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::combine</text>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<title>Node4&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M267.39,-198.85C318.4,-211.43 390.55,-230.73 416,-245 440.78,-258.89 464.35,-280.8 481.15,-298.48"/>
<polygon fill="midnightblue" stroke="midnightblue" points="479,-301.31 488.37,-306.26 484.14,-296.55 479,-301.31"/>
<!-- Node3&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node3&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M264.32,-438.26C281.09,-443.28 299.3,-448.73 315.1,-453.46"/>
<polygon fill="midnightblue" stroke="midnightblue" points="314.51,-456.94 325.09,-456.45 316.52,-450.23 314.51,-456.94"/>
</g>
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><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="black" points="306,-78.5 306,-119.5 416,-119.5 416,-78.5 306,-78.5"/>
<text text-anchor="start" x="314" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="314" y="-96.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="361" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_hc</text>
<g id="a_node6"><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="black" points="452,-244.5 452,-285.5 562,-285.5 562,-244.5 452,-244.5"/>
<text text-anchor="start" x="460" y="-273.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="460" y="-262.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="507" y="-251.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::combine</text>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node6 -->
<!-- Node5&#45;&gt;Node6 -->
<g id="edge5" class="edge">
<title>Node4&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M247.84,-165.38C268.36,-153.24 294.5,-137.77 316.38,-124.81"/>
<polygon fill="midnightblue" stroke="midnightblue" points="318.34,-127.73 325.16,-119.62 314.77,-121.7 318.34,-127.73"/>
<title>Node5&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M264.01,-229.1C305.7,-231.95 364.73,-236.97 416,-245 424.5,-246.33 433.4,-247.99 442.16,-249.77"/>
<polygon fill="midnightblue" stroke="midnightblue" points="441.45,-253.2 451.96,-251.83 442.89,-246.35 441.45,-253.2"/>
</g>
<!-- Node7 -->
<g id="node7" class="node">
<title>Node7</title>
<g id="a_node7"><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="black" points="306,-0.5 306,-41.5 416,-41.5 416,-0.5 306,-0.5"/>
<text text-anchor="start" x="314" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="314" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="361" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_labels</text>
<g id="a_node7"><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="black" points="303,-0.5 303,-41.5 413,-41.5 413,-0.5 303,-0.5"/>
<text text-anchor="start" x="311" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="311" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="358" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_hc</text>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node7 -->
<g id="edge7" class="edge">
<title>Node4&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M227.79,-165.25C245.35,-141.15 276.04,-100.66 306,-69 312.59,-62.04 320.05,-54.96 327.28,-48.46"/>
<polygon fill="midnightblue" stroke="midnightblue" points="329.8,-50.89 334.98,-41.65 325.17,-45.65 329.8,-50.89"/>
<!-- Node5&#45;&gt;Node7 -->
<g id="edge6" class="edge">
<title>Node5&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M218.91,-205.49C233.16,-174.06 263.25,-113.01 300,-69 306.09,-61.71 313.38,-54.65 320.67,-48.29"/>
<polygon fill="midnightblue" stroke="midnightblue" points="323.13,-50.8 328.53,-41.69 318.63,-45.44 323.13,-50.8"/>
</g>
<!-- Node8 -->
<g id="node8" class="node">
<title>Node8</title>
<g id="a_node8"><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="black" points="306,-254.5 306,-295.5 416,-295.5 416,-254.5 306,-254.5"/>
<text text-anchor="start" x="314" y="-283.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="314" y="-272.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="361" y="-261.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_par</text>
<g id="a_node8"><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="black" points="303,-254.5 303,-295.5 413,-295.5 413,-254.5 303,-254.5"/>
<text text-anchor="start" x="311" y="-283.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="311" y="-272.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="358" y="-261.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_labels</text>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node8 -->
<g id="edge9" class="edge">
<title>Node4&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M247.09,-206.64C268.06,-219.34 295.1,-235.71 317.46,-249.24"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.72,-252.28 326.09,-254.47 319.35,-246.3 315.72,-252.28"/>
<!-- Node5&#45;&gt;Node8 -->
<g id="edge8" class="edge">
<title>Node5&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M264.32,-244.11C273.77,-247.26 283.67,-250.56 293.34,-253.78"/>
<polygon fill="midnightblue" stroke="midnightblue" points="292.31,-257.13 302.9,-256.97 294.52,-250.49 292.31,-257.13"/>
</g>
<!-- Node9 -->
<g id="node9" class="node">
<title>Node9</title>
<g id="a_node9"><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="black" points="306,-156.5 306,-197.5 416,-197.5 416,-156.5 306,-156.5"/>
<text text-anchor="start" x="314" y="-185.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="314" y="-174.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="361" y="-163.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::init</text>
<g id="a_node9"><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="black" points="303,-138.5 303,-179.5 413,-179.5 413,-138.5 303,-138.5"/>
<text text-anchor="start" x="311" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="311" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="358" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_par</text>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node9 -->
<g id="edge11" class="edge">
<title>Node4&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M267.32,-182.67C276.57,-182.11 286.25,-181.52 295.73,-180.93"/>
<polygon fill="midnightblue" stroke="midnightblue" points="296.14,-184.42 305.9,-180.31 295.71,-177.43 296.14,-184.42"/>
</g>
<!-- Node6&#45;&gt;Node6 -->
<g id="edge6" class="edge">
<title>Node6&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M334.17,-119.86C331.24,-129.54 340.18,-138 361,-138 374.01,-138 382.38,-134.7 386.12,-129.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="389.59,-130.31 387.83,-119.86 382.69,-129.13 389.59,-130.31"/>
</g>
<!-- Node7&#45;&gt;Node7 -->
<g id="edge8" class="edge">
<title>Node7&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M334.17,-41.86C331.24,-51.54 340.18,-60 361,-60 374.01,-60 382.38,-56.7 386.12,-51.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="389.59,-52.31 387.83,-41.86 382.69,-51.13 389.59,-52.31"/>
</g>
<!-- Node8&#45;&gt;Node8 -->
<!-- Node5&#45;&gt;Node9 -->
<g id="edge10" class="edge">
<title>Node8&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M334.17,-295.86C331.24,-305.54 340.18,-314 361,-314 374.01,-314 382.38,-310.7 386.12,-305.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="389.59,-306.31 387.83,-295.86 382.69,-305.13 389.59,-306.31"/>
<title>Node5&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M255.3,-205.35C270.18,-198.57 286.88,-190.96 302.38,-183.9"/>
<polygon fill="midnightblue" stroke="midnightblue" points="304.2,-186.91 311.85,-179.58 301.29,-180.54 304.2,-186.91"/>
</g>
<!-- Node10 -->
<g id="node10" class="node">
<title>Node10</title>
<g id="a_node10"><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="black" points="452,-117.5 452,-158.5 562,-158.5 562,-117.5 452,-117.5"/>
<text text-anchor="start" x="460" y="-146.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="460" y="-135.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="507" y="-124.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_lca</text>
<g id="a_node10"><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="black" points="303,-78.5 303,-119.5 413,-119.5 413,-78.5 303,-78.5"/>
<text text-anchor="start" x="311" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="311" y="-96.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="358" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::init</text>
</a>
</g>
</g>
<!-- Node9&#45;&gt;Node10 -->
<!-- Node5&#45;&gt;Node10 -->
<g id="edge12" class="edge">
<title>Node9&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M416.03,-162.37C424.5,-160.07 433.32,-157.69 441.98,-155.34"/>
<polygon fill="midnightblue" stroke="midnightblue" points="442.93,-158.71 451.67,-152.72 441.1,-151.95 442.93,-158.71"/>
<title>Node5&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M225.85,-205.13C242.61,-184.06 270.64,-151.49 300,-129 301.77,-127.65 303.6,-126.32 305.49,-125.03"/>
<polygon fill="midnightblue" stroke="midnightblue" points="307.46,-127.92 314,-119.59 303.69,-122.03 307.46,-127.92"/>
</g>
<!-- Node7&#45;&gt;Node7 -->
<g id="edge7" class="edge">
<title>Node7&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M330.8,-41.86C327.83,-51.54 336.9,-60 358,-60 371.19,-60 379.68,-56.7 383.46,-51.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="386.93,-52.32 385.2,-41.86 380.04,-51.12 386.93,-52.32"/>
</g>
<!-- Node8&#45;&gt;Node8 -->
<g id="edge9" class="edge">
<title>Node8&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M330.8,-295.86C327.83,-305.54 336.9,-314 358,-314 371.19,-314 379.68,-310.7 383.46,-305.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="386.93,-306.32 385.2,-295.86 380.04,-305.12 386.93,-306.32"/>
</g>
<!-- Node9&#45;&gt;Node9 -->
<g id="edge11" class="edge">
<title>Node9&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M330.8,-179.86C327.83,-189.54 336.9,-198 358,-198 371.19,-198 379.68,-194.7 383.46,-189.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="386.93,-190.32 385.2,-179.86 380.04,-189.12 386.93,-190.32"/>
</g>
<!-- Node11 -->
<g id="node11" class="node">
<title>Node11</title>
<g id="a_node11"><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="black" points="452,-195.5 452,-236.5 562,-236.5 562,-195.5 452,-195.5"/>
<text text-anchor="start" x="460" y="-224.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="460" y="-213.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="507" y="-202.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_size</text>
<g id="a_node11"><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="black" points="452,-39.5 452,-80.5 562,-80.5 562,-39.5 452,-39.5"/>
<text text-anchor="start" x="460" y="-68.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="460" y="-57.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="507" y="-46.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_lca</text>
</a>
</g>
</g>
<!-- Node9&#45;&gt;Node11 -->
<g id="edge14" class="edge">
<title>Node9&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M416.03,-191.63C424.5,-193.93 433.32,-196.31 441.98,-198.66"/>
<polygon fill="midnightblue" stroke="midnightblue" points="441.1,-202.05 451.67,-201.28 442.93,-195.29 441.1,-202.05"/>
</g>
<!-- Node10&#45;&gt;Node10 -->
<!-- Node10&#45;&gt;Node11 -->
<g id="edge13" class="edge">
<title>Node10&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M480.17,-158.86C477.24,-168.54 486.18,-177 507,-177 520.01,-177 528.38,-173.7 532.12,-168.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="535.59,-169.31 533.83,-158.86 528.69,-168.13 535.59,-169.31"/>
<title>Node10&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M413.32,-84.59C422.67,-82.11 432.46,-79.51 442.03,-76.97"/>
<polygon fill="midnightblue" stroke="midnightblue" points="443.14,-80.3 451.9,-74.35 441.34,-73.53 443.14,-80.3"/>
</g>
<!-- Node12 -->
<g id="node12" class="node">
<title>Node12</title>
<g id="a_node12"><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="black" points="452,-117.5 452,-158.5 562,-158.5 562,-117.5 452,-117.5"/>
<text text-anchor="start" x="460" y="-146.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="460" y="-135.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="507" y="-124.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_size</text>
</a>
</g>
</g>
<!-- Node10&#45;&gt;Node12 -->
<g id="edge15" class="edge">
<title>Node10&#45;&gt;Node12</title>
<path fill="none" stroke="midnightblue" d="M413.32,-113.41C422.67,-115.89 432.46,-118.49 442.03,-121.03"/>
<polygon fill="midnightblue" stroke="midnightblue" points="441.34,-124.47 451.9,-123.65 443.14,-117.7 441.34,-124.47"/>
</g>
<!-- Node11&#45;&gt;Node11 -->
<g id="edge15" class="edge">
<g id="edge14" class="edge">
<title>Node11&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M480.17,-236.86C477.24,-246.54 486.18,-255 507,-255 520.01,-255 528.38,-251.7 532.12,-246.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="535.59,-247.31 533.83,-236.86 528.69,-246.13 535.59,-247.31"/>
<path fill="none" stroke="midnightblue" d="M479.8,-80.86C476.83,-90.54 485.9,-99 507,-99 520.19,-99 528.68,-95.7 532.46,-90.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="535.93,-91.32 534.2,-80.86 529.04,-90.12 535.93,-91.32"/>
</g>
<!-- Node12&#45;&gt;Node12 -->
<g id="edge16" class="edge">
<title>Node12&#45;&gt;Node12</title>
<path fill="none" stroke="midnightblue" d="M479.8,-158.86C476.83,-168.54 485.9,-177 507,-177 520.19,-177 528.68,-173.7 532.46,-168.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="535.93,-169.32 534.2,-158.86 529.04,-168.12 535.93,-169.32"/>
</g>
<!-- Node14 -->
<g id="node14" class="node">
<title>Node14</title>
<g id="a_node14"><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="black" points="306,-389.5 306,-430.5 416,-430.5 416,-389.5 306,-389.5"/>
<text text-anchor="start" x="314" y="-418.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="314" y="-407.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="361" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::chain_query</text>
<polygon fill="white" stroke="black" points="303,-332.5 303,-373.5 413,-373.5 413,-332.5 303,-332.5"/>
<text text-anchor="start" x="311" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="311" y="-350.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="358" y="-339.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::chain_query</text>
</a>
</g>
</g>
<!-- Node13&#45;&gt;Node14 -->
<g id="edge18" class="edge">
<g id="edge19" class="edge">
<title>Node13&#45;&gt;Node14</title>
<path fill="none" stroke="midnightblue" d="M256.31,-459.38C272.39,-451.72 290.8,-442.95 307.6,-434.95"/>
<polygon fill="midnightblue" stroke="midnightblue" points="309.22,-438.06 316.75,-430.6 306.21,-431.74 309.22,-438.06"/>
<path fill="none" stroke="midnightblue" d="M264.32,-334.72C273.67,-336.56 283.46,-338.49 293.03,-340.38"/>
<polygon fill="midnightblue" stroke="midnightblue" points="292.42,-343.83 302.9,-342.33 293.77,-336.96 292.42,-343.83"/>
</g>
<!-- Node16 -->
<g id="node16" class="node">
<title>Node16</title>
<g id="a_node16"><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="black" points="306,-459.5 306,-500.5 416,-500.5 416,-459.5 306,-459.5"/>
<text text-anchor="start" x="314" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="314" y="-477.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="361" y="-466.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lca</text>
<polygon fill="white" stroke="black" points="303,-392.5 303,-433.5 413,-433.5 413,-392.5 303,-392.5"/>
<text text-anchor="start" x="311" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="311" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="358" y="-399.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lca</text>
</a>
</g>
</g>
<!-- Node13&#45;&gt;Node16 -->
<g id="edge21" class="edge">
<g id="edge22" class="edge">
<title>Node13&#45;&gt;Node16</title>
<path fill="none" stroke="midnightblue" d="M267.32,-480C276.57,-480 286.25,-480 295.73,-480"/>
<polygon fill="midnightblue" stroke="midnightblue" points="295.9,-483.5 305.9,-480 295.9,-476.5 295.9,-483.5"/>
<path fill="none" stroke="midnightblue" d="M242.03,-344.66C249.26,-349.36 256.91,-354.34 264,-359 280.07,-369.56 283.47,-373.18 300,-383 302.48,-384.47 305.04,-385.95 307.63,-387.43"/>
<polygon fill="midnightblue" stroke="midnightblue" points="306.1,-390.58 316.54,-392.37 309.5,-384.46 306.1,-390.58"/>
</g>
<!-- Node14&#45;&gt;Node5 -->
<g id="edge19" class="edge">
<title>Node14&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M397.6,-389.48C416.89,-378.36 440.93,-364.51 461.46,-352.67"/>
<polygon fill="midnightblue" stroke="midnightblue" points="463.4,-355.59 470.31,-347.57 459.9,-349.53 463.4,-355.59"/>
<!-- Node14&#45;&gt;Node6 -->
<g id="edge20" class="edge">
<title>Node14&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M399.11,-332.46C404.82,-329.37 410.59,-326.16 416,-323 433.07,-313.04 451.48,-301.34 467.18,-291.08"/>
<polygon fill="midnightblue" stroke="midnightblue" points="469.16,-293.96 475.59,-285.54 465.31,-288.12 469.16,-293.96"/>
</g>
<!-- Node15 -->
<g id="node15" class="node">
<title>Node15</title>
<g id="a_node15"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="477.5,-400.5 477.5,-419.5 536.5,-419.5 536.5,-400.5 477.5,-400.5"/>
<text text-anchor="middle" x="507" y="-407.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::swap</text>
<g id="a_node15"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap#" xlink:title=" ">
<polygon fill="white" stroke="black" points="477.5,-343.5 477.5,-362.5 536.5,-362.5 536.5,-343.5 477.5,-343.5"/>
<text text-anchor="middle" x="507" y="-350.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::swap</text>
</a>
</g>
</g>
<!-- Node14&#45;&gt;Node15 -->
<g id="edge20" class="edge">
<g id="edge21" class="edge">
<title>Node14&#45;&gt;Node15</title>
<path fill="none" stroke="midnightblue" d="M416.03,-410C432.89,-410 451.15,-410 466.79,-410"/>
<polygon fill="midnightblue" stroke="midnightblue" points="467.15,-413.5 477.15,-410 467.15,-406.5 467.15,-413.5"/>
<path fill="none" stroke="midnightblue" d="M413.32,-353C431.17,-353 450.63,-353 467.1,-353"/>
<polygon fill="midnightblue" stroke="midnightblue" points="467.44,-356.5 477.44,-353 467.44,-349.5 467.44,-356.5"/>
</g>
<!-- Node17 -->
<g id="node17" class="node">
<title>Node17</title>
<g id="a_node17"><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="black" points="452,-459.5 452,-500.5 562,-500.5 562,-459.5 452,-459.5"/>
<text text-anchor="start" x="460" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="460" y="-477.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="507" y="-466.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lift</text>
<polygon fill="white" stroke="black" points="452,-392.5 452,-433.5 562,-433.5 562,-392.5 452,-392.5"/>
<text text-anchor="start" x="460" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="460" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="507" y="-399.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lift</text>
</a>
</g>
</g>
<!-- Node16&#45;&gt;Node17 -->
<g id="edge22" class="edge">
<g id="edge23" class="edge">
<title>Node16&#45;&gt;Node17</title>
<path fill="none" stroke="midnightblue" d="M416.03,-480C424.31,-480 432.94,-480 441.42,-480"/>
<polygon fill="midnightblue" stroke="midnightblue" points="441.67,-483.5 451.67,-480 441.67,-476.5 441.67,-483.5"/>
<path fill="none" stroke="midnightblue" d="M413.32,-413C422.57,-413 432.25,-413 441.73,-413"/>
<polygon fill="midnightblue" stroke="midnightblue" points="441.9,-416.5 451.9,-413 441.9,-409.5 441.9,-416.5"/>
</g>
<!-- Node18&#45;&gt;Node19 -->
<g id="edge24" class="edge">
<g id="edge25" class="edge">
<title>Node18&#45;&gt;Node19</title>
<path fill="none" stroke="midnightblue" d="M260.57,-304.58C275.08,-310.69 291.13,-317.27 306,-323 311.22,-325.01 316.75,-327.05 322.2,-329.02"/>
<polygon fill="midnightblue" stroke="midnightblue" points="321.26,-332.4 331.86,-332.45 323.61,-325.8 321.26,-332.4"/>
<path fill="none" stroke="midnightblue" d="M264.32,-528.87C277.36,-531 291.26,-533.27 304.22,-535.38"/>
<polygon fill="midnightblue" stroke="midnightblue" points="303.95,-538.89 314.38,-537.04 305.08,-531.98 303.95,-538.89"/>
</g>
<!-- Node21 -->
<g id="node21" class="node">
<title>Node21</title>
<g id="a_node21"><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="black" points="306,-519.5 306,-560.5 416,-560.5 416,-519.5 306,-519.5"/>
<text text-anchor="start" x="314" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="314" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="361" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::update</text>
<polygon fill="white" stroke="black" points="303,-597.5 303,-638.5 413,-638.5 413,-597.5 303,-597.5"/>
<text text-anchor="start" x="311" y="-626.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="311" y="-615.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="358" y="-604.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::update</text>
</a>
</g>
</g>
<!-- Node20&#45;&gt;Node21 -->
<g id="edge27" class="edge">
<g id="edge28" class="edge">
<title>Node20&#45;&gt;Node21</title>
<path fill="none" stroke="midnightblue" d="M267.32,-540C276.57,-540 286.25,-540 295.73,-540"/>
<polygon fill="midnightblue" stroke="midnightblue" points="295.9,-543.5 305.9,-540 295.9,-536.5 295.9,-543.5"/>
<path fill="none" stroke="midnightblue" d="M264.32,-618C273.57,-618 283.25,-618 292.73,-618"/>
<polygon fill="midnightblue" stroke="midnightblue" points="292.9,-621.5 302.9,-618 292.9,-614.5 292.9,-621.5"/>
</g>
<!-- Node22&#45;&gt;Node3 -->
<g id="edge29" class="edge">
<g id="edge30" class="edge">
<title>Node22&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M118.18,-420C126.39,-420 136.26,-420 146.47,-420"/>
<polygon fill="midnightblue" stroke="midnightblue" points="146.73,-423.5 156.73,-420 146.73,-416.5 146.73,-423.5"/>
<path fill="none" stroke="midnightblue" d="M108.88,-504.15C124.52,-491.19 152.65,-467.88 174.95,-449.39"/>
<polygon fill="midnightblue" stroke="midnightblue" points="177.41,-451.9 182.87,-442.83 172.94,-446.51 177.41,-451.9"/>
</g>
<!-- Node22&#45;&gt;Node4 -->
<g id="edge30" class="edge">
<g id="edge32" class="edge">
<title>Node22&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M110.27,-410.2C113.18,-407.5 115.99,-404.38 118,-401 152.45,-343.23 123.6,-314 154,-254 161.3,-239.6 172.17,-225.59 182.47,-214.07"/>
<polygon fill="midnightblue" stroke="midnightblue" points="185.24,-216.23 189.46,-206.51 180.1,-211.48 185.24,-216.23"/>
<path fill="none" stroke="midnightblue" d="M97.67,-523.68C100.02,-549.34 110.35,-619.13 154,-648 194.78,-674.97 224.88,-677.32 264,-648 309.58,-613.85 271.38,-574.25 300,-525 309.54,-508.59 324.59,-493.28 336.83,-482.37"/>
<polygon fill="midnightblue" stroke="midnightblue" points="339.45,-484.73 344.75,-475.56 334.89,-479.42 339.45,-484.73"/>
</g>
<!-- Node22&#45;&gt;Node12 -->
<!-- Node22&#45;&gt;Node5 -->
<g id="edge31" class="edge">
<title>Node22&#45;&gt;Node12</title>
<path fill="none" stroke="midnightblue" d="M113.61,-410.34C124.8,-404.06 140.01,-395.97 154,-390 159.04,-387.85 164.41,-385.79 169.76,-383.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="171,-387.13 179.3,-380.55 168.7,-380.52 171,-387.13"/>
<title>Node22&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M107.77,-504.15C111.56,-500.12 115.49,-495.18 118,-490 156.54,-410.26 117.37,-374.64 154,-294 160.54,-279.61 170.77,-265.61 180.58,-254.09"/>
<polygon fill="midnightblue" stroke="midnightblue" points="183.26,-256.34 187.25,-246.53 178.01,-251.71 183.26,-256.34"/>
</g>
<!-- Node22&#45;&gt;Node13 -->
<g id="edge32" class="edge">
<g id="edge33" class="edge">
<title>Node22&#45;&gt;Node13</title>
<path fill="none" stroke="midnightblue" d="M115.06,-429.51C127.88,-436.25 145.74,-445.65 162.57,-454.51"/>
<polygon fill="midnightblue" stroke="midnightblue" points="161.3,-457.8 171.78,-459.36 164.56,-451.6 161.3,-457.8"/>
<path fill="none" stroke="midnightblue" d="M106.88,-504.37C110.73,-500.22 114.95,-495.14 118,-490 141.67,-450.09 131.28,-432.46 154,-392 161.8,-378.12 172.35,-364.11 182.06,-352.45"/>
<polygon fill="midnightblue" stroke="midnightblue" points="184.78,-354.66 188.61,-344.78 179.45,-350.12 184.78,-354.66"/>
</g>
<!-- Node22&#45;&gt;Node18 -->
<g id="edge33" class="edge">
<g id="edge34" class="edge">
<title>Node22&#45;&gt;Node18</title>
<path fill="none" stroke="midnightblue" d="M108.52,-410.34C111.71,-407.46 115.1,-404.21 118,-401 136.11,-380.94 137.31,-373.25 154,-352 164.36,-338.81 176.21,-324.54 186.42,-312.49"/>
<polygon fill="midnightblue" stroke="midnightblue" points="189.37,-314.43 193.19,-304.55 184.04,-309.89 189.37,-314.43"/>
<path fill="none" stroke="midnightblue" d="M118.14,-515.14C125.62,-515.55 134.48,-516.03 143.67,-516.52"/>
<polygon fill="midnightblue" stroke="midnightblue" points="143.55,-520.02 153.72,-517.07 143.92,-513.03 143.55,-520.02"/>
</g>
<!-- Node22&#45;&gt;Node19 -->
<g id="edge34" class="edge">
<g id="edge35" class="edge">
<title>Node22&#45;&gt;Node19</title>
<path fill="none" stroke="midnightblue" d="M97.2,-429.57C98.34,-457.13 105.84,-536.78 154,-570 196.44,-599.27 230.3,-602.89 270,-570 336.19,-515.17 259.45,-452.25 306,-380 312.07,-370.58 321.38,-362.81 330.57,-356.81"/>
<polygon fill="midnightblue" stroke="midnightblue" points="332.47,-359.75 339.23,-351.6 328.86,-353.75 332.47,-359.75"/>
<path fill="none" stroke="midnightblue" d="M96.79,-523.76C96.75,-553.48 101.18,-643.21 154,-681 193.76,-709.44 223.67,-708.63 264,-681 300.56,-655.95 273.48,-623.51 300,-588 308.5,-576.62 320.68,-566.67 331.61,-559.13"/>
<polygon fill="midnightblue" stroke="midnightblue" points="333.56,-562.03 340,-553.61 329.72,-556.18 333.56,-562.03"/>
</g>
<!-- Node22&#45;&gt;Node20 -->
<g id="edge35" class="edge">
<g id="edge36" class="edge">
<title>Node22&#45;&gt;Node20</title>
<path fill="none" stroke="midnightblue" d="M101.01,-429.55C108.89,-447.33 127.91,-485.92 154,-510 155.27,-511.17 156.6,-512.31 157.97,-513.42"/>
<polygon fill="midnightblue" stroke="midnightblue" points="156.05,-516.36 166.2,-519.41 160.17,-510.7 156.05,-516.36"/>
<path fill="none" stroke="midnightblue" d="M103.57,-523.71C113.42,-537.84 133.12,-564.4 154,-583 157.33,-585.96 160.93,-588.85 164.64,-591.62"/>
<polygon fill="midnightblue" stroke="midnightblue" points="162.69,-594.53 172.87,-597.47 166.74,-588.82 162.69,-594.53"/>
</g>
<!-- Node23&#45;&gt;Node3 -->
<g id="edge37" class="edge">
<g id="edge38" class="edge">
<title>Node23&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M118.18,-389.06C126.56,-391.85 136.67,-395.22 147.11,-398.7"/>
<polygon fill="midnightblue" stroke="midnightblue" points="146.14,-402.07 156.73,-401.91 148.35,-395.43 146.14,-402.07"/>
<path fill="none" stroke="midnightblue" d="M118.14,-402.57C125.62,-404.19 134.48,-406.1 143.67,-408.09"/>
<polygon fill="midnightblue" stroke="midnightblue" points="143.21,-411.57 153.72,-410.26 144.69,-404.73 143.21,-411.57"/>
</g>
<!-- Node23&#45;&gt;Node4 -->
<g id="edge38" class="edge">
<g id="edge40" class="edge">
<title>Node23&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M109.65,-372.48C112.71,-369.7 115.75,-366.46 118,-363 145.84,-320.25 129.17,-298.57 154,-254 161.86,-239.9 172.84,-225.94 183.06,-214.38"/>
<polygon fill="midnightblue" stroke="midnightblue" points="185.83,-216.54 189.97,-206.78 180.66,-211.82 185.83,-216.54"/>
<path fill="none" stroke="midnightblue" d="M98.9,-388.26C103.71,-366.66 118.57,-314.98 154,-294 196.06,-269.09 225.58,-263.76 264,-294 317.53,-336.14 255.48,-391.43 300,-443 302.82,-446.27 306.18,-449.08 309.83,-451.5"/>
<polygon fill="midnightblue" stroke="midnightblue" points="308.33,-454.67 318.77,-456.45 311.72,-448.54 308.33,-454.67"/>
</g>
<!-- Node23&#45;&gt;Node12 -->
<!-- Node23&#45;&gt;Node5 -->
<g id="edge39" class="edge">
<title>Node23&#45;&gt;Node12</title>
<path fill="none" stroke="midnightblue" d="M118.18,-379.96C125.65,-379.24 134.5,-378.38 143.72,-377.49"/>
<polygon fill="midnightblue" stroke="midnightblue" points="144.21,-380.96 153.83,-376.52 143.54,-373.99 144.21,-380.96"/>
<title>Node23&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M98.93,-388.33C104.13,-364.39 120.35,-301.36 154,-261 156.36,-258.17 159,-255.5 161.82,-252.97"/>
<polygon fill="midnightblue" stroke="midnightblue" points="164.04,-255.68 169.61,-246.67 159.63,-250.24 164.04,-255.68"/>
</g>
<!-- Node23&#45;&gt;Node13 -->
<g id="edge40" class="edge">
<g id="edge41" class="edge">
<title>Node23&#45;&gt;Node13</title>
<path fill="none" stroke="midnightblue" d="M108.52,-391.66C111.71,-394.54 115.1,-397.79 118,-401 136.11,-421.06 133.52,-432.37 154,-450 155.34,-451.15 156.73,-452.28 158.16,-453.38"/>
<polygon fill="midnightblue" stroke="midnightblue" points="156.52,-456.5 166.73,-459.33 160.52,-450.75 156.52,-456.5"/>
<path fill="none" stroke="midnightblue" d="M110.99,-388.29C122.49,-380.34 139.23,-368.84 154,-359 158.31,-356.13 162.82,-353.16 167.33,-350.21"/>
<polygon fill="midnightblue" stroke="midnightblue" points="169.47,-352.99 175.93,-344.6 165.64,-347.13 169.47,-352.99"/>
</g>
<!-- Node23&#45;&gt;Node18 -->
<g id="edge41" class="edge">
<g id="edge42" class="edge">
<title>Node23&#45;&gt;Node18</title>
<path fill="none" stroke="midnightblue" d="M108.41,-372.24C111.6,-369.36 115.02,-366.13 118,-363 135.42,-344.7 134.97,-335.62 154,-319 157.39,-316.04 161.06,-313.18 164.84,-310.45"/>
<polygon fill="midnightblue" stroke="midnightblue" points="166.97,-313.23 173.25,-304.69 163.02,-307.45 166.97,-313.23"/>
<path fill="none" stroke="midnightblue" d="M105.71,-407.57C121.99,-425.47 157.61,-464.62 182.2,-491.64"/>
<polygon fill="midnightblue" stroke="midnightblue" points="179.81,-494.22 189.13,-499.26 184.99,-489.51 179.81,-494.22"/>
</g>
<!-- Node23&#45;&gt;Node19 -->
<g id="edge42" class="edge">
<g id="edge43" class="edge">
<title>Node23&#45;&gt;Node19</title>
<path fill="none" stroke="midnightblue" d="M111.26,-372.23C122.37,-365.2 138.47,-356.24 154,-352 204.74,-338.15 265.07,-336.9 307.29,-338.35"/>
<polygon fill="midnightblue" stroke="midnightblue" points="307.21,-341.85 317.34,-338.76 307.49,-334.86 307.21,-341.85"/>
<path fill="none" stroke="midnightblue" d="M118.19,-389.87C152.23,-378.31 219.72,-361.66 264,-392 300.56,-417.05 276.13,-447.66 300,-485 310.22,-500.99 325.24,-516.32 337.3,-527.34"/>
<polygon fill="midnightblue" stroke="midnightblue" points="335.28,-530.23 345.08,-534.24 339.92,-524.99 335.28,-530.23"/>
</g>
<!-- Node23&#45;&gt;Node20 -->
<g id="edge43" class="edge">
<g id="edge44" class="edge">
<title>Node23&#45;&gt;Node20</title>
<path fill="none" stroke="midnightblue" d="M109.65,-391.52C112.71,-394.3 115.75,-397.54 118,-401 145.84,-443.75 121.03,-471.07 154,-510 154.83,-510.98 155.71,-511.94 156.62,-512.87"/>
<polygon fill="midnightblue" stroke="midnightblue" points="154.35,-515.54 164.19,-519.47 158.95,-510.26 154.35,-515.54"/>
<path fill="none" stroke="midnightblue" d="M100.77,-407.54C105.02,-418.31 112.09,-436.38 118,-452 134.41,-495.4 131.28,-509.54 154,-550 161.8,-563.88 172.35,-577.89 182.06,-589.55"/>
<polygon fill="midnightblue" stroke="midnightblue" points="179.45,-591.88 188.61,-597.22 184.78,-587.34 179.45,-591.88"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -1,22 +1,22 @@
<map id="test_3" name="test_3">
<area shape="rect" id="node1" title=" " alt="" coords="5,441,64,468"/>
<area shape="rect" id="node2" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a79ab4601c4a95c0902ac04e779e5f54d" title="Adds an undirected edge from node u to node v in the tree." alt="" coords="116,103,263,159"/>
<area shape="rect" id="node3" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" title="This function must be called after the tree adjacency list and node values are populated The function..." alt="" coords="116,360,263,416"/>
<area shape="rect" id="node11" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/push_back.html#" title=" " alt="" coords="112,441,267,468"/>
<area shape="rect" id="node12" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a4dfbf5d9df825eeb63b294c6849bdcab" title="This function returns the sum of node values in the simple path from from node_1 to node_2." alt="" coords="116,183,263,239"/>
<area shape="rect" id="node17" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a04cd96efaba147b19d3afc769b90ff70" title="Set the values for all the nodes." alt="" coords="116,551,263,607"/>
<area shape="rect" id="node18" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size.html#" title=" " alt="" coords="330,608,446,635"/>
<area shape="rect" id="node19" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a9f1cb54ed09fde931bf3220d75ee4c57" title="This function updates the value at node with val." alt="" coords="116,640,263,696"/>
<area shape="rect" id="node4" 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="509,255,656,311"/>
<area shape="rect" id="node5" 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="315,189,461,245"/>
<area shape="rect" id="node6" 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="315,293,461,349"/>
<area shape="rect" id="node7" 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="315,448,461,504"/>
<area shape="rect" id="node8" 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="315,528,461,584"/>
<area shape="rect" id="node9" 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="509,580,656,636"/>
<area shape="rect" id="node10" 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="509,476,656,532"/>
<area shape="rect" id="node13" 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="315,85,461,141"/>
<area shape="rect" id="node15" 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="315,5,461,61"/>
<area shape="rect" id="node14" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/swap.html#" title=" " alt="" coords="543,100,622,127"/>
<area shape="rect" id="node16" 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="509,5,656,61"/>
<area shape="rect" id="node20" href="$d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c" title="Update the value at a node." alt="" coords="315,659,461,715"/>
<area shape="rect" id="node1" title=" " alt="" coords="5,420,64,447"/>
<area shape="rect" id="node2" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a79ab4601c4a95c0902ac04e779e5f54d" title="Adds an undirected edge from node u to node v in the tree." alt="" coords="112,5,259,61"/>
<area shape="rect" id="node3" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/push_back#" title=" " alt="" coords="307,16,461,43"/>
<area shape="rect" id="node4" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" title="This function must be called after the tree adjacency list and node values are populated The function..." alt="" coords="112,405,259,461"/>
<area shape="rect" id="node12" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a4dfbf5d9df825eeb63b294c6849bdcab" title="This function returns the sum of node values in the simple path from from node_1 to node_2." alt="" coords="112,147,259,203"/>
<area shape="rect" id="node17" href="$d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a04cd96efaba147b19d3afc769b90ff70" title="Set the values for all the nodes." alt="" coords="112,499,259,555"/>
<area shape="rect" id="node18" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/size#" title=" " alt="" coords="326,669,442,696"/>
<area shape="rect" id="node19" href="$d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a9f1cb54ed09fde931bf3220d75ee4c57" title="This function updates the value at node with val." alt="" coords="112,707,259,763"/>
<area shape="rect" id="node5" 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="509,212,656,268"/>
<area shape="rect" id="node6" 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="311,301,457,357"/>
<area shape="rect" id="node7" 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="311,405,457,461"/>
<area shape="rect" id="node8" 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="311,589,457,645"/>
<area shape="rect" id="node9" 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="311,485,457,541"/>
<area shape="rect" id="node10" 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="509,537,656,593"/>
<area shape="rect" id="node11" 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="509,433,656,489"/>
<area shape="rect" id="node13" 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="311,147,457,203"/>
<area shape="rect" id="node15" 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="311,67,457,123"/>
<area shape="rect" id="node14" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/algorithm/swap#" title=" " alt="" coords="543,161,622,188"/>
<area shape="rect" id="node16" 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="509,67,656,123"/>
<area shape="rect" id="node20" href="$d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c" title="Update the value at a node." alt="" coords="311,720,457,776"/>
</map>

View File

@@ -1 +1 @@
c8a3e435e72a8a18dd932a14a872da06
1489dc95e00cecd69633176dbef84974

View File

@@ -4,7 +4,7 @@
<!-- Generated by graphviz version 2.50.0 (20211204.2007)
-->
<!-- Title: test_3 Pages: 1 -->
<!--zoomable 540 -->
<!--zoomable 586 -->
<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[
.edge:hover path { stroke: red; }
@@ -47,20 +47,20 @@ if (edges && edges.length) {
<script type="text/javascript">
var viewWidth = 496;
var viewHeight = 540;
var viewHeight = 586;
var sectionId = 'dynsection-4';
</script>
<script xlink:href="../../svgpan.js"/>
<svg id="graph" class="graph">
<g id="viewport">
<title>test_3</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-536 492,-536 492,4 -4,4"/>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-582 492,-582 492,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title=" ">
<polygon fill="#bfbfbf" stroke="black" points="0,-185.5 0,-204.5 44,-204.5 44,-185.5 0,-185.5"/>
<text text-anchor="middle" x="22" y="-192.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_3</text>
<polygon fill="#bfbfbf" stroke="black" points="0,-247.5 0,-266.5 44,-266.5 44,-247.5 0,-247.5"/>
<text text-anchor="middle" x="22" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_3</text>
</a>
</g>
</g>
@@ -68,320 +68,326 @@ var sectionId = 'dynsection-4';
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a79ab4601c4a95c0902ac04e779e5f54d" target="_top" xlink:title="Adds an undirected edge from node u to node v in the tree.">
<polygon fill="white" stroke="black" points="83,-417.5 83,-458.5 193,-458.5 193,-417.5 83,-417.5"/>
<text text-anchor="start" x="91" y="-446.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-435.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-424.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::add_edge</text>
<polygon fill="white" stroke="black" points="80,-536.5 80,-577.5 190,-577.5 190,-536.5 80,-536.5"/>
<text text-anchor="start" x="88" y="-565.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-554.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-543.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::add_edge</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M22.97,-204.69C23.34,-237.16 28.64,-343.69 80,-408 80.7,-408.87 81.43,-409.73 82.19,-410.55"/>
<polygon fill="midnightblue" stroke="midnightblue" points="79.96,-413.26 89.7,-417.43 84.69,-408.1 79.96,-413.26"/>
<path fill="none" stroke="midnightblue" d="M22.7,-266.51C21.99,-302.71 23.63,-434.06 80,-519 82.53,-522.81 85.58,-526.36 88.93,-529.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="86.81,-532.42 96.66,-536.34 91.41,-527.14 86.81,-532.42"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" 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="black" points="83,-224.5 83,-265.5 193,-265.5 193,-224.5 83,-224.5"/>
<text text-anchor="start" x="91" y="-253.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-231.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::init</text>
<g id="a_node3"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/push_back#" xlink:title=" ">
<polygon fill="white" stroke="black" points="226,-550.5 226,-569.5 342,-569.5 342,-550.5 226,-550.5"/>
<text text-anchor="middle" x="284" y="-557.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::push_back</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<g id="edge16" class="edge">
<title>Node1&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M44.18,-204.29C54.54,-208.83 67.56,-214.54 80.54,-220.24"/>
<polygon fill="midnightblue" stroke="midnightblue" points="79.38,-223.55 89.95,-224.36 82.2,-217.14 79.38,-223.55"/>
<path fill="none" stroke="midnightblue" d="M22.58,-266.9C21.66,-301.08 23.17,-415.55 80,-481 82.87,-484.31 221.89,-539.47 226,-541 231.57,-543.07 237.49,-545.16 243.33,-547.16"/>
<polygon fill="midnightblue" stroke="midnightblue" points="242.39,-550.54 252.99,-550.42 244.63,-543.91 242.39,-550.54"/>
</g>
<!-- Node11 -->
<g id="node11" class="node">
<title>Node11</title>
<g id="a_node11"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/push_back.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="80,-185.5 80,-204.5 196,-204.5 196,-185.5 80,-185.5"/>
<text text-anchor="middle" x="138" y="-192.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::push_back</text>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" 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="black" points="80,-236.5 80,-277.5 190,-277.5 190,-236.5 80,-236.5"/>
<text text-anchor="start" x="88" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-243.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::init</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node11 -->
<g id="edge15" class="edge">
<title>Node1&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M44.18,-195C51.65,-195 60.5,-195 69.72,-195"/>
<polygon fill="midnightblue" stroke="midnightblue" points="69.83,-198.5 79.83,-195 69.83,-191.5 69.83,-198.5"/>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node1&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M44.14,-257C51.62,-257 60.48,-257 69.67,-257"/>
<polygon fill="midnightblue" stroke="midnightblue" points="69.72,-260.5 79.72,-257 69.72,-253.5 69.72,-260.5"/>
</g>
<!-- Node12 -->
<g id="node12" class="node">
<title>Node12</title>
<g id="a_node12"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a4dfbf5d9df825eeb63b294c6849bdcab" target="_top" xlink:title="This function returns the sum of node values in the simple path from from node_1 to node_2.">
<polygon fill="white" stroke="black" points="83,-357.5 83,-398.5 193,-398.5 193,-357.5 83,-357.5"/>
<text text-anchor="start" x="91" y="-386.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-375.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::query</text>
<polygon fill="white" stroke="black" points="80,-430.5 80,-471.5 190,-471.5 190,-430.5 80,-430.5"/>
<text text-anchor="start" x="88" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::query</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node12 -->
<g id="edge16" class="edge">
<g id="edge17" class="edge">
<title>Node1&#45;&gt;Node12</title>
<path fill="none" stroke="midnightblue" d="M28.97,-204.58C45.53,-231.17 92.55,-306.65 118.77,-348.74"/>
<polygon fill="midnightblue" stroke="midnightblue" points="115.93,-350.8 124.19,-357.43 121.87,-347.09 115.93,-350.8"/>
<path fill="none" stroke="midnightblue" d="M28.5,-266.62C44.51,-294.6 91.54,-376.78 117.06,-421.39"/>
<polygon fill="midnightblue" stroke="midnightblue" points="114.15,-423.36 122.16,-430.3 120.23,-419.88 114.15,-423.36"/>
</g>
<!-- Node17 -->
<g id="node17" class="node">
<title>Node17</title>
<g id="a_node17"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a04cd96efaba147b19d3afc769b90ff70" target="_top" xlink:title="Set the values for all the nodes.">
<polygon fill="white" stroke="black" points="83,-81.5 83,-122.5 193,-122.5 193,-81.5 83,-81.5"/>
<text text-anchor="start" x="91" y="-110.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-99.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::set_node_val</text>
<polygon fill="white" stroke="black" points="80,-166.5 80,-207.5 190,-207.5 190,-166.5 80,-166.5"/>
<text text-anchor="start" x="88" y="-195.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::set_node_val</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node17 -->
<g id="edge22" class="edge">
<g id="edge23" class="edge">
<title>Node1&#45;&gt;Node17</title>
<path fill="none" stroke="midnightblue" d="M32.26,-185.34C43.2,-174.15 62.18,-155.39 80,-141 85.27,-136.75 90.98,-132.48 96.69,-128.4"/>
<polygon fill="midnightblue" stroke="midnightblue" points="98.81,-131.19 105,-122.59 94.8,-125.45 98.81,-131.19"/>
<path fill="none" stroke="midnightblue" d="M38.43,-247.27C52.49,-238.41 73.87,-224.92 92.85,-212.95"/>
<polygon fill="midnightblue" stroke="midnightblue" points="94.78,-215.87 101.37,-207.58 91.05,-209.95 94.78,-215.87"/>
</g>
<!-- Node18 -->
<g id="node18" class="node">
<title>Node18</title>
<g id="a_node18"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="243.5,-60.5 243.5,-79.5 330.5,-79.5 330.5,-60.5 243.5,-60.5"/>
<text text-anchor="middle" x="287" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
<g id="a_node18"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size#" xlink:title=" ">
<polygon fill="white" stroke="black" points="240.5,-60.5 240.5,-79.5 327.5,-79.5 327.5,-60.5 240.5,-60.5"/>
<text text-anchor="middle" x="284" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node18 -->
<g id="edge24" class="edge">
<g id="edge25" class="edge">
<title>Node1&#45;&gt;Node18</title>
<path fill="none" stroke="midnightblue" d="M44.28,-187.94C87.61,-173.47 183.11,-141.04 196,-132 216.41,-117.69 211.51,-103.2 232,-89 234.74,-87.1 237.68,-85.38 240.73,-83.81"/>
<polygon fill="midnightblue" stroke="midnightblue" points="242.44,-86.88 250.11,-79.57 239.56,-80.5 242.44,-86.88"/>
<path fill="none" stroke="midnightblue" d="M26.18,-247.47C33.08,-228.06 51.19,-183.53 80,-157 122.74,-117.64 186.01,-94.39 230.53,-81.97"/>
<polygon fill="midnightblue" stroke="midnightblue" points="231.55,-85.32 240.29,-79.34 229.73,-78.56 231.55,-85.32"/>
</g>
<!-- Node19 -->
<g id="node19" class="node">
<title>Node19</title>
<g id="a_node19"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a9f1cb54ed09fde931bf3220d75ee4c57" target="_top" xlink:title="This function updates the value at node with val.">
<polygon fill="white" stroke="black" points="83,-14.5 83,-55.5 193,-55.5 193,-14.5 83,-14.5"/>
<text text-anchor="start" x="91" y="-43.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::update</text>
<polygon fill="white" stroke="black" points="80,-10.5 80,-51.5 190,-51.5 190,-10.5 80,-10.5"/>
<text text-anchor="start" x="88" y="-39.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-28.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::update</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node19 -->
<g id="edge25" class="edge">
<g id="edge26" class="edge">
<title>Node1&#45;&gt;Node19</title>
<path fill="none" stroke="midnightblue" d="M25.47,-185.36C31.54,-163.18 49,-107.74 80,-72 83.17,-68.35 86.78,-64.92 90.62,-61.73"/>
<polygon fill="midnightblue" stroke="midnightblue" points="92.9,-64.39 98.73,-55.54 88.66,-58.83 92.9,-64.39"/>
<path fill="none" stroke="midnightblue" d="M25.62,-247.36C32.52,-222.73 52.58,-155.85 80,-105 88.48,-89.27 99.93,-73.09 110.09,-59.88"/>
<polygon fill="midnightblue" stroke="midnightblue" points="113.12,-61.7 116.55,-51.67 107.62,-57.37 113.12,-61.7"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><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="black" points="378,-303.5 378,-344.5 488,-344.5 488,-303.5 378,-303.5"/>
<text text-anchor="start" x="386" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::combine</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node3&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M193.09,-243.38C234.88,-243.77 293.58,-247.91 342,-265 362.7,-272.31 383.37,-285.34 399.66,-297.3"/>
<polygon fill="midnightblue" stroke="midnightblue" points="397.67,-300.18 407.76,-303.42 401.89,-294.6 397.67,-300.18"/>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<title>Node2&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M190.32,-558.11C198.58,-558.28 207.18,-558.45 215.67,-558.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="215.88,-562.13 225.95,-558.84 216.02,-555.13 215.88,-562.13"/>
</g>
<!-- Node5 -->
<g id="node5" class="node">
<title>Node5</title>
<g id="a_node5"><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="black" points="232,-352.5 232,-393.5 342,-393.5 342,-352.5 232,-352.5"/>
<text text-anchor="start" x="240" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-359.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_hc</text>
<g id="a_node5"><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="black" points="378,-381.5 378,-422.5 488,-422.5 488,-381.5 378,-381.5"/>
<text text-anchor="start" x="386" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-399.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-388.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::combine</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node5 -->
<!-- Node4&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<title>Node3&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M155.26,-265.52C172.7,-286.66 201.97,-319.72 232,-343 233.59,-344.23 235.24,-345.44 236.92,-346.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="235.33,-349.78 245.61,-352.37 239.19,-343.94 235.33,-349.78"/>
<title>Node4&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M144.2,-277.84C156.9,-306.98 184.27,-359.04 226,-383 268.82,-407.59 325.06,-411.25 367.95,-409.36"/>
<polygon fill="midnightblue" stroke="midnightblue" points="368.21,-412.86 378,-408.81 367.82,-405.87 368.21,-412.86"/>
</g>
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><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="black" points="232,-274.5 232,-315.5 342,-315.5 342,-274.5 232,-274.5"/>
<text text-anchor="start" x="240" y="-303.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-292.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-281.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_labels</text>
<g id="a_node6"><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="black" points="229,-314.5 229,-355.5 339,-355.5 339,-314.5 229,-314.5"/>
<text text-anchor="start" x="237" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_hc</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node6 -->
<g id="edge6" class="edge">
<title>Node3&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M193.32,-263.48C202.77,-266.69 212.67,-270.06 222.34,-273.35"/>
<polygon fill="midnightblue" stroke="midnightblue" points="221.31,-276.69 231.9,-276.6 223.56,-270.07 221.31,-276.69"/>
<!-- Node4&#45;&gt;Node6 -->
<g id="edge5" class="edge">
<title>Node4&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M174.52,-277.6C190.44,-286.1 209.1,-296.05 226,-305 228.87,-306.52 231.81,-308.08 234.79,-309.65"/>
<polygon fill="midnightblue" stroke="midnightblue" points="233.26,-312.8 243.74,-314.37 236.53,-306.61 233.26,-312.8"/>
</g>
<!-- Node7 -->
<g id="node7" class="node">
<title>Node7</title>
<g id="a_node7"><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="black" points="232,-158.5 232,-199.5 342,-199.5 342,-158.5 232,-158.5"/>
<text text-anchor="start" x="240" y="-187.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-176.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-165.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_par</text>
<g id="a_node7"><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="black" points="229,-236.5 229,-277.5 339,-277.5 339,-236.5 229,-236.5"/>
<text text-anchor="start" x="237" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-243.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_labels</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node7 -->
<g id="edge8" class="edge">
<title>Node3&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M184.71,-224.48C199.36,-217.9 215.75,-210.54 231,-203.69"/>
<polygon fill="midnightblue" stroke="midnightblue" points="232.63,-206.8 240.32,-199.51 229.77,-200.41 232.63,-206.8"/>
<!-- Node4&#45;&gt;Node7 -->
<g id="edge7" class="edge">
<title>Node4&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M190.32,-257C199.57,-257 209.25,-257 218.73,-257"/>
<polygon fill="midnightblue" stroke="midnightblue" points="218.9,-260.5 228.9,-257 218.9,-253.5 218.9,-260.5"/>
</g>
<!-- Node8 -->
<g id="node8" class="node">
<title>Node8</title>
<g id="a_node8"><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="black" points="232,-98.5 232,-139.5 342,-139.5 342,-98.5 232,-98.5"/>
<text text-anchor="start" x="240" y="-127.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-116.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-105.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::init</text>
<g id="a_node8"><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="black" points="229,-98.5 229,-139.5 339,-139.5 339,-98.5 229,-98.5"/>
<text text-anchor="start" x="237" y="-127.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-116.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-105.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_par</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node8 -->
<g id="edge10" class="edge">
<title>Node3&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M183.14,-224.4C187.76,-221.28 192.16,-217.81 196,-214 219.44,-190.74 208.66,-172.37 232,-149 233.07,-147.93 234.18,-146.89 235.33,-145.88"/>
<polygon fill="midnightblue" stroke="midnightblue" points="237.65,-148.5 243.37,-139.59 233.34,-142.99 237.65,-148.5"/>
</g>
<!-- Node5&#45;&gt;Node5 -->
<g id="edge5" class="edge">
<title>Node5&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M260.17,-393.86C257.24,-403.54 266.18,-412 287,-412 300.01,-412 308.38,-408.7 312.12,-403.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.59,-404.31 313.83,-393.86 308.69,-403.13 315.59,-404.31"/>
</g>
<!-- Node6&#45;&gt;Node6 -->
<g id="edge7" class="edge">
<title>Node6&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M260.17,-315.86C257.24,-325.54 266.18,-334 287,-334 300.01,-334 308.38,-330.7 312.12,-325.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.59,-326.31 313.83,-315.86 308.69,-325.13 315.59,-326.31"/>
</g>
<!-- Node7&#45;&gt;Node7 -->
<!-- Node4&#45;&gt;Node8 -->
<g id="edge9" class="edge">
<title>Node7&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M260.17,-199.86C257.24,-209.54 266.18,-218 287,-218 300.01,-218 308.38,-214.7 312.12,-209.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.59,-210.31 313.83,-199.86 308.69,-209.13 315.59,-210.31"/>
<title>Node4&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M167.33,-236.33C175.13,-230.52 183.2,-223.89 190,-217 209.23,-197.51 207.39,-187.08 226,-167 232.59,-159.89 240.2,-152.83 247.67,-146.41"/>
<polygon fill="midnightblue" stroke="midnightblue" points="250.26,-148.81 255.67,-139.71 245.76,-143.44 250.26,-148.81"/>
</g>
<!-- Node9 -->
<g id="node9" class="node">
<title>Node9</title>
<g id="a_node9"><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="black" points="378,-59.5 378,-100.5 488,-100.5 488,-59.5 378,-59.5"/>
<text text-anchor="start" x="386" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_lca</text>
<g id="a_node9"><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="black" points="229,-176.5 229,-217.5 339,-217.5 339,-176.5 229,-176.5"/>
<text text-anchor="start" x="237" y="-205.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-194.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-183.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::init</text>
</a>
</g>
</g>
<!-- Node8&#45;&gt;Node9 -->
<!-- Node4&#45;&gt;Node9 -->
<g id="edge11" class="edge">
<title>Node8&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M342.03,-104.37C350.5,-102.07 359.32,-99.69 367.98,-97.34"/>
<polygon fill="midnightblue" stroke="midnightblue" points="368.93,-100.71 377.67,-94.72 367.1,-93.95 368.93,-100.71"/>
<title>Node4&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M186.59,-236.35C198.25,-231.59 210.77,-226.48 222.8,-221.57"/>
<polygon fill="midnightblue" stroke="midnightblue" points="224.38,-224.71 232.32,-217.69 221.74,-218.23 224.38,-224.71"/>
</g>
<!-- Node6&#45;&gt;Node6 -->
<g id="edge6" class="edge">
<title>Node6&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M256.8,-355.86C253.83,-365.54 262.9,-374 284,-374 297.19,-374 305.68,-370.7 309.46,-365.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="312.93,-366.32 311.2,-355.86 306.04,-365.12 312.93,-366.32"/>
</g>
<!-- Node7&#45;&gt;Node7 -->
<g id="edge8" class="edge">
<title>Node7&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M256.8,-277.86C253.83,-287.54 262.9,-296 284,-296 297.19,-296 305.68,-292.7 309.46,-287.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="312.93,-288.32 311.2,-277.86 306.04,-287.12 312.93,-288.32"/>
</g>
<!-- Node8&#45;&gt;Node8 -->
<g id="edge10" class="edge">
<title>Node8&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M256.8,-139.86C253.83,-149.54 262.9,-158 284,-158 297.19,-158 305.68,-154.7 309.46,-149.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="312.93,-150.32 311.2,-139.86 306.04,-149.12 312.93,-150.32"/>
</g>
<!-- Node10 -->
<g id="node10" class="node">
<title>Node10</title>
<g id="a_node10"><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_node10"><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="black" points="378,-137.5 378,-178.5 488,-178.5 488,-137.5 378,-137.5"/>
<text text-anchor="start" x="386" y="-166.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-155.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-144.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_size</text>
<text text-anchor="middle" x="433" y="-144.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_lca</text>
</a>
</g>
</g>
<!-- Node8&#45;&gt;Node10 -->
<g id="edge13" class="edge">
<title>Node8&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M342.03,-133.63C350.5,-135.93 359.32,-138.31 367.98,-140.66"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.1,-144.05 377.67,-143.28 368.93,-137.29 367.1,-144.05"/>
</g>
<!-- Node9&#45;&gt;Node9 -->
<!-- Node9&#45;&gt;Node10 -->
<g id="edge12" class="edge">
<title>Node9&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M406.17,-100.86C403.24,-110.54 412.18,-119 433,-119 446.01,-119 454.38,-115.7 458.12,-110.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.59,-111.31 459.83,-100.86 454.69,-110.13 461.59,-111.31"/>
<title>Node9&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M339.32,-182.59C348.67,-180.11 358.46,-177.51 368.03,-174.97"/>
<polygon fill="midnightblue" stroke="midnightblue" points="369.14,-178.3 377.9,-172.35 367.34,-171.53 369.14,-178.3"/>
</g>
<!-- Node11 -->
<g id="node11" class="node">
<title>Node11</title>
<g id="a_node11"><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="black" points="378,-215.5 378,-256.5 488,-256.5 488,-215.5 378,-215.5"/>
<text text-anchor="start" x="386" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_size</text>
</a>
</g>
</g>
<!-- Node9&#45;&gt;Node11 -->
<g id="edge14" class="edge">
<title>Node9&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M339.32,-211.41C348.67,-213.89 358.46,-216.49 368.03,-219.03"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.34,-222.47 377.9,-221.65 369.14,-215.7 367.34,-222.47"/>
</g>
<!-- Node10&#45;&gt;Node10 -->
<g id="edge14" class="edge">
<g id="edge13" class="edge">
<title>Node10&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M406.17,-178.86C403.24,-188.54 412.18,-197 433,-197 446.01,-197 454.38,-193.7 458.12,-188.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.59,-189.31 459.83,-178.86 454.69,-188.13 461.59,-189.31"/>
<path fill="none" stroke="midnightblue" d="M405.8,-178.86C402.83,-188.54 411.9,-197 433,-197 446.19,-197 454.68,-193.7 458.46,-188.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.93,-189.32 460.2,-178.86 455.04,-188.12 461.93,-189.32"/>
</g>
<!-- Node11&#45;&gt;Node11 -->
<g id="edge15" class="edge">
<title>Node11&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M405.8,-256.86C402.83,-266.54 411.9,-275 433,-275 446.19,-275 454.68,-271.7 458.46,-266.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.93,-267.32 460.2,-256.86 455.04,-266.12 461.93,-267.32"/>
</g>
<!-- Node13 -->
<g id="node13" class="node">
<title>Node13</title>
<g id="a_node13"><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="black" points="232,-430.5 232,-471.5 342,-471.5 342,-430.5 232,-430.5"/>
<text text-anchor="start" x="240" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::chain_query</text>
<polygon fill="white" stroke="black" points="229,-430.5 229,-471.5 339,-471.5 339,-430.5 229,-430.5"/>
<text text-anchor="start" x="237" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::chain_query</text>
</a>
</g>
</g>
<!-- Node12&#45;&gt;Node13 -->
<g id="edge17" class="edge">
<g id="edge18" class="edge">
<title>Node12&#45;&gt;Node13</title>
<path fill="none" stroke="midnightblue" d="M180.34,-398.53C197.48,-407.04 217.52,-416.99 235.52,-425.93"/>
<polygon fill="midnightblue" stroke="midnightblue" points="234.2,-429.19 244.72,-430.5 237.32,-422.92 234.2,-429.19"/>
<path fill="none" stroke="midnightblue" d="M190.32,-451C199.57,-451 209.25,-451 218.73,-451"/>
<polygon fill="midnightblue" stroke="midnightblue" points="218.9,-454.5 228.9,-451 218.9,-447.5 218.9,-454.5"/>
</g>
<!-- Node15 -->
<g id="node15" class="node">
<title>Node15</title>
<g id="a_node15"><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="black" points="232,-490.5 232,-531.5 342,-531.5 342,-490.5 232,-490.5"/>
<text text-anchor="start" x="240" y="-519.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-497.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lca</text>
<polygon fill="white" stroke="black" points="229,-490.5 229,-531.5 339,-531.5 339,-490.5 229,-490.5"/>
<text text-anchor="start" x="237" y="-519.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-497.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lca</text>
</a>
</g>
</g>
<!-- Node12&#45;&gt;Node15 -->
<g id="edge20" class="edge">
<g id="edge21" class="edge">
<title>Node12&#45;&gt;Node15</title>
<path fill="none" stroke="midnightblue" d="M184.75,-398.59C188.81,-401.42 192.64,-404.56 196,-408 221.24,-433.91 207.05,-454.8 232,-481 232.92,-481.96 233.87,-482.9 234.85,-483.81"/>
<polygon fill="midnightblue" stroke="midnightblue" points="232.97,-486.79 242.93,-490.38 237.38,-481.36 232.97,-486.79"/>
<path fill="none" stroke="midnightblue" d="M186.59,-471.65C198.25,-476.41 210.77,-481.52 222.8,-486.43"/>
<polygon fill="midnightblue" stroke="midnightblue" points="221.74,-489.77 232.32,-490.31 224.38,-483.29 221.74,-489.77"/>
</g>
<!-- Node13&#45;&gt;Node4 -->
<g id="edge18" class="edge">
<title>Node13&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M328.43,-430.41C333.15,-427.47 337.78,-424.31 342,-421 367.69,-400.85 392.6,-373.18 409.67,-352.54"/>
<polygon fill="midnightblue" stroke="midnightblue" points="412.44,-354.69 416.04,-344.73 407.01,-350.27 412.44,-354.69"/>
<!-- Node13&#45;&gt;Node5 -->
<g id="edge19" class="edge">
<title>Node13&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M339.32,-432.89C348.77,-429.74 358.67,-426.44 368.34,-423.22"/>
<polygon fill="midnightblue" stroke="midnightblue" points="369.52,-426.51 377.9,-420.03 367.31,-419.87 369.52,-426.51"/>
</g>
<!-- Node14 -->
<g id="node14" class="node">
<title>Node14</title>
<g id="a_node14"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap.html#" xlink:title=" ">
<g id="a_node14"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap#" xlink:title=" ">
<polygon fill="white" stroke="black" points="403.5,-441.5 403.5,-460.5 462.5,-460.5 462.5,-441.5 403.5,-441.5"/>
<text text-anchor="middle" x="433" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::swap</text>
</a>
</g>
</g>
<!-- Node13&#45;&gt;Node14 -->
<g id="edge19" class="edge">
<g id="edge20" class="edge">
<title>Node13&#45;&gt;Node14</title>
<path fill="none" stroke="midnightblue" d="M342.03,-451C358.89,-451 377.15,-451 392.79,-451"/>
<polygon fill="midnightblue" stroke="midnightblue" points="393.15,-454.5 403.15,-451 393.15,-447.5 393.15,-454.5"/>
<path fill="none" stroke="midnightblue" d="M339.32,-451C357.17,-451 376.63,-451 393.1,-451"/>
<polygon fill="midnightblue" stroke="midnightblue" points="393.44,-454.5 403.44,-451 393.44,-447.5 393.44,-454.5"/>
</g>
<!-- Node16 -->
<g id="node16" class="node">
@@ -395,33 +401,33 @@ var sectionId = 'dynsection-4';
</g>
</g>
<!-- Node15&#45;&gt;Node16 -->
<g id="edge21" class="edge">
<g id="edge22" class="edge">
<title>Node15&#45;&gt;Node16</title>
<path fill="none" stroke="midnightblue" d="M342.03,-511C350.31,-511 358.94,-511 367.42,-511"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.67,-514.5 377.67,-511 367.67,-507.5 367.67,-514.5"/>
<path fill="none" stroke="midnightblue" d="M339.32,-511C348.57,-511 358.25,-511 367.73,-511"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.9,-514.5 377.9,-511 367.9,-507.5 367.9,-514.5"/>
</g>
<!-- Node17&#45;&gt;Node18 -->
<g id="edge23" class="edge">
<g id="edge24" class="edge">
<title>Node17&#45;&gt;Node18</title>
<path fill="none" stroke="midnightblue" d="M193.32,-90.18C206.48,-87.31 220.53,-84.25 233.61,-81.41"/>
<polygon fill="midnightblue" stroke="midnightblue" points="234.36,-84.82 243.38,-79.28 232.87,-77.98 234.36,-84.82"/>
<path fill="none" stroke="midnightblue" d="M157.53,-166.45C167.63,-156.56 179.68,-144.4 190,-133 206.95,-114.27 205.2,-103.34 226,-89 228.88,-87.02 231.98,-85.23 235.2,-83.61"/>
<polygon fill="midnightblue" stroke="midnightblue" points="236.74,-86.76 244.48,-79.52 233.92,-80.35 236.74,-86.76"/>
</g>
<!-- Node20 -->
<g id="node20" class="node">
<title>Node20</title>
<g id="a_node20"><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="black" points="232,-0.5 232,-41.5 342,-41.5 342,-0.5 232,-0.5"/>
<text text-anchor="start" x="240" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::update</text>
<polygon fill="white" stroke="black" points="229,-0.5 229,-41.5 339,-41.5 339,-0.5 229,-0.5"/>
<text text-anchor="start" x="237" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::update</text>
</a>
</g>
</g>
<!-- Node19&#45;&gt;Node20 -->
<g id="edge26" class="edge">
<g id="edge27" class="edge">
<title>Node19&#45;&gt;Node20</title>
<path fill="none" stroke="midnightblue" d="M193.32,-29.83C202.57,-28.95 212.25,-28.02 221.73,-27.12"/>
<polygon fill="midnightblue" stroke="midnightblue" points="222.28,-30.58 231.9,-26.15 221.62,-23.62 222.28,-30.58"/>
<path fill="none" stroke="midnightblue" d="M190.32,-27.3C199.57,-26.68 209.25,-26.02 218.73,-25.37"/>
<polygon fill="midnightblue" stroke="midnightblue" points="219.16,-28.85 228.9,-24.68 218.69,-21.87 219.16,-28.85"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -4,17 +4,17 @@
<!-- Generated by graphviz version 2.50.0 (20211204.2007)
-->
<!-- Title: test_3 Pages: 1 -->
<svg width="496pt" height="540pt"
viewBox="0.00 0.00 496.00 540.00" 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 536)">
<svg width="496pt" height="586pt"
viewBox="0.00 0.00 496.00 586.00" 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 582)">
<title>test_3</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-536 492,-536 492,4 -4,4"/>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-582 492,-582 492,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title=" ">
<polygon fill="#bfbfbf" stroke="black" points="0,-185.5 0,-204.5 44,-204.5 44,-185.5 0,-185.5"/>
<text text-anchor="middle" x="22" y="-192.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_3</text>
<polygon fill="#bfbfbf" stroke="black" points="0,-247.5 0,-266.5 44,-266.5 44,-247.5 0,-247.5"/>
<text text-anchor="middle" x="22" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">test_3</text>
</a>
</g>
</g>
@@ -22,320 +22,326 @@
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a79ab4601c4a95c0902ac04e779e5f54d" target="_top" xlink:title="Adds an undirected edge from node u to node v in the tree.">
<polygon fill="white" stroke="black" points="83,-417.5 83,-458.5 193,-458.5 193,-417.5 83,-417.5"/>
<text text-anchor="start" x="91" y="-446.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-435.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-424.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::add_edge</text>
<polygon fill="white" stroke="black" points="80,-536.5 80,-577.5 190,-577.5 190,-536.5 80,-536.5"/>
<text text-anchor="start" x="88" y="-565.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-554.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-543.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::add_edge</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M22.97,-204.69C23.34,-237.16 28.64,-343.69 80,-408 80.7,-408.87 81.43,-409.73 82.19,-410.55"/>
<polygon fill="midnightblue" stroke="midnightblue" points="79.96,-413.26 89.7,-417.43 84.69,-408.1 79.96,-413.26"/>
<path fill="none" stroke="midnightblue" d="M22.7,-266.51C21.99,-302.71 23.63,-434.06 80,-519 82.53,-522.81 85.58,-526.36 88.93,-529.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="86.81,-532.42 96.66,-536.34 91.41,-527.14 86.81,-532.42"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" 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="black" points="83,-224.5 83,-265.5 193,-265.5 193,-224.5 83,-224.5"/>
<text text-anchor="start" x="91" y="-253.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-231.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::init</text>
<g id="a_node3"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/push_back#" xlink:title=" ">
<polygon fill="white" stroke="black" points="226,-550.5 226,-569.5 342,-569.5 342,-550.5 226,-550.5"/>
<text text-anchor="middle" x="284" y="-557.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::push_back</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<g id="edge16" class="edge">
<title>Node1&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M44.18,-204.29C54.54,-208.83 67.56,-214.54 80.54,-220.24"/>
<polygon fill="midnightblue" stroke="midnightblue" points="79.38,-223.55 89.95,-224.36 82.2,-217.14 79.38,-223.55"/>
<path fill="none" stroke="midnightblue" d="M22.58,-266.9C21.66,-301.08 23.17,-415.55 80,-481 82.87,-484.31 221.89,-539.47 226,-541 231.57,-543.07 237.49,-545.16 243.33,-547.16"/>
<polygon fill="midnightblue" stroke="midnightblue" points="242.39,-550.54 252.99,-550.42 244.63,-543.91 242.39,-550.54"/>
</g>
<!-- Node11 -->
<g id="node11" class="node">
<title>Node11</title>
<g id="a_node11"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/push_back.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="80,-185.5 80,-204.5 196,-204.5 196,-185.5 80,-185.5"/>
<text text-anchor="middle" x="138" y="-192.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::push_back</text>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828" 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="black" points="80,-236.5 80,-277.5 190,-277.5 190,-236.5 80,-236.5"/>
<text text-anchor="start" x="88" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-243.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::init</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node11 -->
<g id="edge15" class="edge">
<title>Node1&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M44.18,-195C51.65,-195 60.5,-195 69.72,-195"/>
<polygon fill="midnightblue" stroke="midnightblue" points="69.83,-198.5 79.83,-195 69.83,-191.5 69.83,-198.5"/>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node1&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M44.14,-257C51.62,-257 60.48,-257 69.67,-257"/>
<polygon fill="midnightblue" stroke="midnightblue" points="69.72,-260.5 79.72,-257 69.72,-253.5 69.72,-260.5"/>
</g>
<!-- Node12 -->
<g id="node12" class="node">
<title>Node12</title>
<g id="a_node12"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a4dfbf5d9df825eeb63b294c6849bdcab" target="_top" xlink:title="This function returns the sum of node values in the simple path from from node_1 to node_2.">
<polygon fill="white" stroke="black" points="83,-357.5 83,-398.5 193,-398.5 193,-357.5 83,-357.5"/>
<text text-anchor="start" x="91" y="-386.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-375.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::query</text>
<polygon fill="white" stroke="black" points="80,-430.5 80,-471.5 190,-471.5 190,-430.5 80,-430.5"/>
<text text-anchor="start" x="88" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::query</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node12 -->
<g id="edge16" class="edge">
<g id="edge17" class="edge">
<title>Node1&#45;&gt;Node12</title>
<path fill="none" stroke="midnightblue" d="M28.97,-204.58C45.53,-231.17 92.55,-306.65 118.77,-348.74"/>
<polygon fill="midnightblue" stroke="midnightblue" points="115.93,-350.8 124.19,-357.43 121.87,-347.09 115.93,-350.8"/>
<path fill="none" stroke="midnightblue" d="M28.5,-266.62C44.51,-294.6 91.54,-376.78 117.06,-421.39"/>
<polygon fill="midnightblue" stroke="midnightblue" points="114.15,-423.36 122.16,-430.3 120.23,-419.88 114.15,-423.36"/>
</g>
<!-- Node17 -->
<g id="node17" class="node">
<title>Node17</title>
<g id="a_node17"><a xlink:href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a04cd96efaba147b19d3afc769b90ff70" target="_top" xlink:title="Set the values for all the nodes.">
<polygon fill="white" stroke="black" points="83,-81.5 83,-122.5 193,-122.5 193,-81.5 83,-81.5"/>
<text text-anchor="start" x="91" y="-110.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-99.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::set_node_val</text>
<polygon fill="white" stroke="black" points="80,-166.5 80,-207.5 190,-207.5 190,-166.5 80,-166.5"/>
<text text-anchor="start" x="88" y="-195.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::set_node_val</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node17 -->
<g id="edge22" class="edge">
<g id="edge23" class="edge">
<title>Node1&#45;&gt;Node17</title>
<path fill="none" stroke="midnightblue" d="M32.26,-185.34C43.2,-174.15 62.18,-155.39 80,-141 85.27,-136.75 90.98,-132.48 96.69,-128.4"/>
<polygon fill="midnightblue" stroke="midnightblue" points="98.81,-131.19 105,-122.59 94.8,-125.45 98.81,-131.19"/>
<path fill="none" stroke="midnightblue" d="M38.43,-247.27C52.49,-238.41 73.87,-224.92 92.85,-212.95"/>
<polygon fill="midnightblue" stroke="midnightblue" points="94.78,-215.87 101.37,-207.58 91.05,-209.95 94.78,-215.87"/>
</g>
<!-- Node18 -->
<g id="node18" class="node">
<title>Node18</title>
<g id="a_node18"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="243.5,-60.5 243.5,-79.5 330.5,-79.5 330.5,-60.5 243.5,-60.5"/>
<text text-anchor="middle" x="287" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
<g id="a_node18"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/size#" xlink:title=" ">
<polygon fill="white" stroke="black" points="240.5,-60.5 240.5,-79.5 327.5,-79.5 327.5,-60.5 240.5,-60.5"/>
<text text-anchor="middle" x="284" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::size</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node18 -->
<g id="edge24" class="edge">
<g id="edge25" class="edge">
<title>Node1&#45;&gt;Node18</title>
<path fill="none" stroke="midnightblue" d="M44.28,-187.94C87.61,-173.47 183.11,-141.04 196,-132 216.41,-117.69 211.51,-103.2 232,-89 234.74,-87.1 237.68,-85.38 240.73,-83.81"/>
<polygon fill="midnightblue" stroke="midnightblue" points="242.44,-86.88 250.11,-79.57 239.56,-80.5 242.44,-86.88"/>
<path fill="none" stroke="midnightblue" d="M26.18,-247.47C33.08,-228.06 51.19,-183.53 80,-157 122.74,-117.64 186.01,-94.39 230.53,-81.97"/>
<polygon fill="midnightblue" stroke="midnightblue" points="231.55,-85.32 240.29,-79.34 229.73,-78.56 231.55,-85.32"/>
</g>
<!-- Node19 -->
<g id="node19" class="node">
<title>Node19</title>
<g id="a_node19"><a xlink:href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a9f1cb54ed09fde931bf3220d75ee4c57" target="_top" xlink:title="This function updates the value at node with val.">
<polygon fill="white" stroke="black" points="83,-14.5 83,-55.5 193,-55.5 193,-14.5 83,-14.5"/>
<text text-anchor="start" x="91" y="-43.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="91" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="138" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::update</text>
<polygon fill="white" stroke="black" points="80,-10.5 80,-51.5 190,-51.5 190,-10.5 80,-10.5"/>
<text text-anchor="start" x="88" y="-39.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="88" y="-28.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="135" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::update</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node19 -->
<g id="edge25" class="edge">
<g id="edge26" class="edge">
<title>Node1&#45;&gt;Node19</title>
<path fill="none" stroke="midnightblue" d="M25.47,-185.36C31.54,-163.18 49,-107.74 80,-72 83.17,-68.35 86.78,-64.92 90.62,-61.73"/>
<polygon fill="midnightblue" stroke="midnightblue" points="92.9,-64.39 98.73,-55.54 88.66,-58.83 92.9,-64.39"/>
<path fill="none" stroke="midnightblue" d="M25.62,-247.36C32.52,-222.73 52.58,-155.85 80,-105 88.48,-89.27 99.93,-73.09 110.09,-59.88"/>
<polygon fill="midnightblue" stroke="midnightblue" points="113.12,-61.7 116.55,-51.67 107.62,-57.37 113.12,-61.7"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><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="black" points="378,-303.5 378,-344.5 488,-344.5 488,-303.5 378,-303.5"/>
<text text-anchor="start" x="386" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::combine</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node3&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M193.09,-243.38C234.88,-243.77 293.58,-247.91 342,-265 362.7,-272.31 383.37,-285.34 399.66,-297.3"/>
<polygon fill="midnightblue" stroke="midnightblue" points="397.67,-300.18 407.76,-303.42 401.89,-294.6 397.67,-300.18"/>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<title>Node2&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M190.32,-558.11C198.58,-558.28 207.18,-558.45 215.67,-558.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="215.88,-562.13 225.95,-558.84 216.02,-555.13 215.88,-562.13"/>
</g>
<!-- Node5 -->
<g id="node5" class="node">
<title>Node5</title>
<g id="a_node5"><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="black" points="232,-352.5 232,-393.5 342,-393.5 342,-352.5 232,-352.5"/>
<text text-anchor="start" x="240" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-359.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_hc</text>
<g id="a_node5"><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="black" points="378,-381.5 378,-422.5 488,-422.5 488,-381.5 378,-381.5"/>
<text text-anchor="start" x="386" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-399.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-388.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::combine</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node5 -->
<!-- Node4&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<title>Node3&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M155.26,-265.52C172.7,-286.66 201.97,-319.72 232,-343 233.59,-344.23 235.24,-345.44 236.92,-346.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="235.33,-349.78 245.61,-352.37 239.19,-343.94 235.33,-349.78"/>
<title>Node4&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M144.2,-277.84C156.9,-306.98 184.27,-359.04 226,-383 268.82,-407.59 325.06,-411.25 367.95,-409.36"/>
<polygon fill="midnightblue" stroke="midnightblue" points="368.21,-412.86 378,-408.81 367.82,-405.87 368.21,-412.86"/>
</g>
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><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="black" points="232,-274.5 232,-315.5 342,-315.5 342,-274.5 232,-274.5"/>
<text text-anchor="start" x="240" y="-303.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-292.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-281.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_labels</text>
<g id="a_node6"><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="black" points="229,-314.5 229,-355.5 339,-355.5 339,-314.5 229,-314.5"/>
<text text-anchor="start" x="237" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_hc</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node6 -->
<g id="edge6" class="edge">
<title>Node3&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M193.32,-263.48C202.77,-266.69 212.67,-270.06 222.34,-273.35"/>
<polygon fill="midnightblue" stroke="midnightblue" points="221.31,-276.69 231.9,-276.6 223.56,-270.07 221.31,-276.69"/>
<!-- Node4&#45;&gt;Node6 -->
<g id="edge5" class="edge">
<title>Node4&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M174.52,-277.6C190.44,-286.1 209.1,-296.05 226,-305 228.87,-306.52 231.81,-308.08 234.79,-309.65"/>
<polygon fill="midnightblue" stroke="midnightblue" points="233.26,-312.8 243.74,-314.37 236.53,-306.61 233.26,-312.8"/>
</g>
<!-- Node7 -->
<g id="node7" class="node">
<title>Node7</title>
<g id="a_node7"><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="black" points="232,-158.5 232,-199.5 342,-199.5 342,-158.5 232,-158.5"/>
<text text-anchor="start" x="240" y="-187.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-176.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-165.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_par</text>
<g id="a_node7"><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="black" points="229,-236.5 229,-277.5 339,-277.5 339,-236.5 229,-236.5"/>
<text text-anchor="start" x="237" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-243.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_labels</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node7 -->
<g id="edge8" class="edge">
<title>Node3&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M184.71,-224.48C199.36,-217.9 215.75,-210.54 231,-203.69"/>
<polygon fill="midnightblue" stroke="midnightblue" points="232.63,-206.8 240.32,-199.51 229.77,-200.41 232.63,-206.8"/>
<!-- Node4&#45;&gt;Node7 -->
<g id="edge7" class="edge">
<title>Node4&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M190.32,-257C199.57,-257 209.25,-257 218.73,-257"/>
<polygon fill="midnightblue" stroke="midnightblue" points="218.9,-260.5 228.9,-257 218.9,-253.5 218.9,-260.5"/>
</g>
<!-- Node8 -->
<g id="node8" class="node">
<title>Node8</title>
<g id="a_node8"><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="black" points="232,-98.5 232,-139.5 342,-139.5 342,-98.5 232,-98.5"/>
<text text-anchor="start" x="240" y="-127.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-116.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-105.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::init</text>
<g id="a_node8"><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="black" points="229,-98.5 229,-139.5 339,-139.5 339,-98.5 229,-98.5"/>
<text text-anchor="start" x="237" y="-127.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-116.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-105.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::dfs_par</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node8 -->
<g id="edge10" class="edge">
<title>Node3&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M183.14,-224.4C187.76,-221.28 192.16,-217.81 196,-214 219.44,-190.74 208.66,-172.37 232,-149 233.07,-147.93 234.18,-146.89 235.33,-145.88"/>
<polygon fill="midnightblue" stroke="midnightblue" points="237.65,-148.5 243.37,-139.59 233.34,-142.99 237.65,-148.5"/>
</g>
<!-- Node5&#45;&gt;Node5 -->
<g id="edge5" class="edge">
<title>Node5&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M260.17,-393.86C257.24,-403.54 266.18,-412 287,-412 300.01,-412 308.38,-408.7 312.12,-403.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.59,-404.31 313.83,-393.86 308.69,-403.13 315.59,-404.31"/>
</g>
<!-- Node6&#45;&gt;Node6 -->
<g id="edge7" class="edge">
<title>Node6&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M260.17,-315.86C257.24,-325.54 266.18,-334 287,-334 300.01,-334 308.38,-330.7 312.12,-325.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.59,-326.31 313.83,-315.86 308.69,-325.13 315.59,-326.31"/>
</g>
<!-- Node7&#45;&gt;Node7 -->
<!-- Node4&#45;&gt;Node8 -->
<g id="edge9" class="edge">
<title>Node7&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M260.17,-199.86C257.24,-209.54 266.18,-218 287,-218 300.01,-218 308.38,-214.7 312.12,-209.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="315.59,-210.31 313.83,-199.86 308.69,-209.13 315.59,-210.31"/>
<title>Node4&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M167.33,-236.33C175.13,-230.52 183.2,-223.89 190,-217 209.23,-197.51 207.39,-187.08 226,-167 232.59,-159.89 240.2,-152.83 247.67,-146.41"/>
<polygon fill="midnightblue" stroke="midnightblue" points="250.26,-148.81 255.67,-139.71 245.76,-143.44 250.26,-148.81"/>
</g>
<!-- Node9 -->
<g id="node9" class="node">
<title>Node9</title>
<g id="a_node9"><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="black" points="378,-59.5 378,-100.5 488,-100.5 488,-59.5 378,-59.5"/>
<text text-anchor="start" x="386" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_lca</text>
<g id="a_node9"><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="black" points="229,-176.5 229,-217.5 339,-217.5 339,-176.5 229,-176.5"/>
<text text-anchor="start" x="237" y="-205.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-194.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-183.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::init</text>
</a>
</g>
</g>
<!-- Node8&#45;&gt;Node9 -->
<!-- Node4&#45;&gt;Node9 -->
<g id="edge11" class="edge">
<title>Node8&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M342.03,-104.37C350.5,-102.07 359.32,-99.69 367.98,-97.34"/>
<polygon fill="midnightblue" stroke="midnightblue" points="368.93,-100.71 377.67,-94.72 367.1,-93.95 368.93,-100.71"/>
<title>Node4&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M186.59,-236.35C198.25,-231.59 210.77,-226.48 222.8,-221.57"/>
<polygon fill="midnightblue" stroke="midnightblue" points="224.38,-224.71 232.32,-217.69 221.74,-218.23 224.38,-224.71"/>
</g>
<!-- Node6&#45;&gt;Node6 -->
<g id="edge6" class="edge">
<title>Node6&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M256.8,-355.86C253.83,-365.54 262.9,-374 284,-374 297.19,-374 305.68,-370.7 309.46,-365.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="312.93,-366.32 311.2,-355.86 306.04,-365.12 312.93,-366.32"/>
</g>
<!-- Node7&#45;&gt;Node7 -->
<g id="edge8" class="edge">
<title>Node7&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M256.8,-277.86C253.83,-287.54 262.9,-296 284,-296 297.19,-296 305.68,-292.7 309.46,-287.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="312.93,-288.32 311.2,-277.86 306.04,-287.12 312.93,-288.32"/>
</g>
<!-- Node8&#45;&gt;Node8 -->
<g id="edge10" class="edge">
<title>Node8&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M256.8,-139.86C253.83,-149.54 262.9,-158 284,-158 297.19,-158 305.68,-154.7 309.46,-149.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="312.93,-150.32 311.2,-139.86 306.04,-149.12 312.93,-150.32"/>
</g>
<!-- Node10 -->
<g id="node10" class="node">
<title>Node10</title>
<g id="a_node10"><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_node10"><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="black" points="378,-137.5 378,-178.5 488,-178.5 488,-137.5 378,-137.5"/>
<text text-anchor="start" x="386" y="-166.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-155.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-144.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_size</text>
<text text-anchor="middle" x="433" y="-144.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_lca</text>
</a>
</g>
</g>
<!-- Node8&#45;&gt;Node10 -->
<g id="edge13" class="edge">
<title>Node8&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M342.03,-133.63C350.5,-135.93 359.32,-138.31 367.98,-140.66"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.1,-144.05 377.67,-143.28 368.93,-137.29 367.1,-144.05"/>
</g>
<!-- Node9&#45;&gt;Node9 -->
<!-- Node9&#45;&gt;Node10 -->
<g id="edge12" class="edge">
<title>Node9&#45;&gt;Node9</title>
<path fill="none" stroke="midnightblue" d="M406.17,-100.86C403.24,-110.54 412.18,-119 433,-119 446.01,-119 454.38,-115.7 458.12,-110.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.59,-111.31 459.83,-100.86 454.69,-110.13 461.59,-111.31"/>
<title>Node9&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M339.32,-182.59C348.67,-180.11 358.46,-177.51 368.03,-174.97"/>
<polygon fill="midnightblue" stroke="midnightblue" points="369.14,-178.3 377.9,-172.35 367.34,-171.53 369.14,-178.3"/>
</g>
<!-- Node11 -->
<g id="node11" class="node">
<title>Node11</title>
<g id="a_node11"><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="black" points="378,-215.5 378,-256.5 488,-256.5 488,-215.5 378,-215.5"/>
<text text-anchor="start" x="386" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="386" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="433" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::dfs_size</text>
</a>
</g>
</g>
<!-- Node9&#45;&gt;Node11 -->
<g id="edge14" class="edge">
<title>Node9&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M339.32,-211.41C348.67,-213.89 358.46,-216.49 368.03,-219.03"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.34,-222.47 377.9,-221.65 369.14,-215.7 367.34,-222.47"/>
</g>
<!-- Node10&#45;&gt;Node10 -->
<g id="edge14" class="edge">
<g id="edge13" class="edge">
<title>Node10&#45;&gt;Node10</title>
<path fill="none" stroke="midnightblue" d="M406.17,-178.86C403.24,-188.54 412.18,-197 433,-197 446.01,-197 454.38,-193.7 458.12,-188.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.59,-189.31 459.83,-178.86 454.69,-188.13 461.59,-189.31"/>
<path fill="none" stroke="midnightblue" d="M405.8,-178.86C402.83,-188.54 411.9,-197 433,-197 446.19,-197 454.68,-193.7 458.46,-188.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.93,-189.32 460.2,-178.86 455.04,-188.12 461.93,-189.32"/>
</g>
<!-- Node11&#45;&gt;Node11 -->
<g id="edge15" class="edge">
<title>Node11&#45;&gt;Node11</title>
<path fill="none" stroke="midnightblue" d="M405.8,-256.86C402.83,-266.54 411.9,-275 433,-275 446.19,-275 454.68,-271.7 458.46,-266.86"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.93,-267.32 460.2,-256.86 455.04,-266.12 461.93,-267.32"/>
</g>
<!-- Node13 -->
<g id="node13" class="node">
<title>Node13</title>
<g id="a_node13"><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="black" points="232,-430.5 232,-471.5 342,-471.5 342,-430.5 232,-430.5"/>
<text text-anchor="start" x="240" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::chain_query</text>
<polygon fill="white" stroke="black" points="229,-430.5 229,-471.5 339,-471.5 339,-430.5 229,-430.5"/>
<text text-anchor="start" x="237" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HLD::chain_query</text>
</a>
</g>
</g>
<!-- Node12&#45;&gt;Node13 -->
<g id="edge17" class="edge">
<g id="edge18" class="edge">
<title>Node12&#45;&gt;Node13</title>
<path fill="none" stroke="midnightblue" d="M180.34,-398.53C197.48,-407.04 217.52,-416.99 235.52,-425.93"/>
<polygon fill="midnightblue" stroke="midnightblue" points="234.2,-429.19 244.72,-430.5 237.32,-422.92 234.2,-429.19"/>
<path fill="none" stroke="midnightblue" d="M190.32,-451C199.57,-451 209.25,-451 218.73,-451"/>
<polygon fill="midnightblue" stroke="midnightblue" points="218.9,-454.5 228.9,-451 218.9,-447.5 218.9,-454.5"/>
</g>
<!-- Node15 -->
<g id="node15" class="node">
<title>Node15</title>
<g id="a_node15"><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="black" points="232,-490.5 232,-531.5 342,-531.5 342,-490.5 232,-490.5"/>
<text text-anchor="start" x="240" y="-519.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-497.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lca</text>
<polygon fill="white" stroke="black" points="229,-490.5 229,-531.5 339,-531.5 339,-490.5 229,-490.5"/>
<text text-anchor="start" x="237" y="-519.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-497.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Tree::lca</text>
</a>
</g>
</g>
<!-- Node12&#45;&gt;Node15 -->
<g id="edge20" class="edge">
<g id="edge21" class="edge">
<title>Node12&#45;&gt;Node15</title>
<path fill="none" stroke="midnightblue" d="M184.75,-398.59C188.81,-401.42 192.64,-404.56 196,-408 221.24,-433.91 207.05,-454.8 232,-481 232.92,-481.96 233.87,-482.9 234.85,-483.81"/>
<polygon fill="midnightblue" stroke="midnightblue" points="232.97,-486.79 242.93,-490.38 237.38,-481.36 232.97,-486.79"/>
<path fill="none" stroke="midnightblue" d="M186.59,-471.65C198.25,-476.41 210.77,-481.52 222.8,-486.43"/>
<polygon fill="midnightblue" stroke="midnightblue" points="221.74,-489.77 232.32,-490.31 224.38,-483.29 221.74,-489.77"/>
</g>
<!-- Node13&#45;&gt;Node4 -->
<g id="edge18" class="edge">
<title>Node13&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M328.43,-430.41C333.15,-427.47 337.78,-424.31 342,-421 367.69,-400.85 392.6,-373.18 409.67,-352.54"/>
<polygon fill="midnightblue" stroke="midnightblue" points="412.44,-354.69 416.04,-344.73 407.01,-350.27 412.44,-354.69"/>
<!-- Node13&#45;&gt;Node5 -->
<g id="edge19" class="edge">
<title>Node13&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M339.32,-432.89C348.77,-429.74 358.67,-426.44 368.34,-423.22"/>
<polygon fill="midnightblue" stroke="midnightblue" points="369.52,-426.51 377.9,-420.03 367.31,-419.87 369.52,-426.51"/>
</g>
<!-- Node14 -->
<g id="node14" class="node">
<title>Node14</title>
<g id="a_node14"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap.html#" xlink:title=" ">
<g id="a_node14"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/algorithm/swap#" xlink:title=" ">
<polygon fill="white" stroke="black" points="403.5,-441.5 403.5,-460.5 462.5,-460.5 462.5,-441.5 403.5,-441.5"/>
<text text-anchor="middle" x="433" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::swap</text>
</a>
</g>
</g>
<!-- Node13&#45;&gt;Node14 -->
<g id="edge19" class="edge">
<g id="edge20" class="edge">
<title>Node13&#45;&gt;Node14</title>
<path fill="none" stroke="midnightblue" d="M342.03,-451C358.89,-451 377.15,-451 392.79,-451"/>
<polygon fill="midnightblue" stroke="midnightblue" points="393.15,-454.5 403.15,-451 393.15,-447.5 393.15,-454.5"/>
<path fill="none" stroke="midnightblue" d="M339.32,-451C357.17,-451 376.63,-451 393.1,-451"/>
<polygon fill="midnightblue" stroke="midnightblue" points="393.44,-454.5 403.44,-451 393.44,-447.5 393.44,-454.5"/>
</g>
<!-- Node16 -->
<g id="node16" class="node">
@@ -349,33 +355,33 @@
</g>
</g>
<!-- Node15&#45;&gt;Node16 -->
<g id="edge21" class="edge">
<g id="edge22" class="edge">
<title>Node15&#45;&gt;Node16</title>
<path fill="none" stroke="midnightblue" d="M342.03,-511C350.31,-511 358.94,-511 367.42,-511"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.67,-514.5 377.67,-511 367.67,-507.5 367.67,-514.5"/>
<path fill="none" stroke="midnightblue" d="M339.32,-511C348.57,-511 358.25,-511 367.73,-511"/>
<polygon fill="midnightblue" stroke="midnightblue" points="367.9,-514.5 377.9,-511 367.9,-507.5 367.9,-514.5"/>
</g>
<!-- Node17&#45;&gt;Node18 -->
<g id="edge23" class="edge">
<g id="edge24" class="edge">
<title>Node17&#45;&gt;Node18</title>
<path fill="none" stroke="midnightblue" d="M193.32,-90.18C206.48,-87.31 220.53,-84.25 233.61,-81.41"/>
<polygon fill="midnightblue" stroke="midnightblue" points="234.36,-84.82 243.38,-79.28 232.87,-77.98 234.36,-84.82"/>
<path fill="none" stroke="midnightblue" d="M157.53,-166.45C167.63,-156.56 179.68,-144.4 190,-133 206.95,-114.27 205.2,-103.34 226,-89 228.88,-87.02 231.98,-85.23 235.2,-83.61"/>
<polygon fill="midnightblue" stroke="midnightblue" points="236.74,-86.76 244.48,-79.52 233.92,-80.35 236.74,-86.76"/>
</g>
<!-- Node20 -->
<g id="node20" class="node">
<title>Node20</title>
<g id="a_node20"><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="black" points="232,-0.5 232,-41.5 342,-41.5 342,-0.5 232,-0.5"/>
<text text-anchor="start" x="240" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="240" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="287" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::update</text>
<polygon fill="white" stroke="black" points="229,-0.5 229,-41.5 339,-41.5 339,-0.5 229,-0.5"/>
<text text-anchor="start" x="237" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">range_queries::heavy</text>
<text text-anchor="start" x="237" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_light_decomposition</text>
<text text-anchor="middle" x="284" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SG::update</text>
</a>
</g>
</g>
<!-- Node19&#45;&gt;Node20 -->
<g id="edge26" class="edge">
<g id="edge27" class="edge">
<title>Node19&#45;&gt;Node20</title>
<path fill="none" stroke="midnightblue" d="M193.32,-29.83C202.57,-28.95 212.25,-28.02 221.73,-27.12"/>
<polygon fill="midnightblue" stroke="midnightblue" points="222.28,-30.58 231.9,-26.15 221.62,-23.62 222.28,-30.58"/>
<path fill="none" stroke="midnightblue" d="M190.32,-27.3C199.57,-26.68 209.25,-26.02 218.73,-25.37"/>
<polygon fill="midnightblue" stroke="midnightblue" points="219.16,-28.85 228.9,-24.68 218.69,-21.87 219.16,-28.85"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 24 KiB