mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-05-02 14:31:57 +08:00
Documentation for 2dadbf73f4
This commit is contained in:
@@ -3,16 +3,18 @@
|
||||
<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.8"/>
|
||||
<meta name="generator" content="Doxygen 1.10.0"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>Algorithms_in_C++: range_queries::heavy_light_decomposition::HLD< X > Class Template Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="../../jquery.js"></script>
|
||||
<script type="text/javascript" src="../../dynsections.js"></script>
|
||||
<script type="text/javascript" src="../../clipboard.js"></script>
|
||||
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="../../resize.js"></script>
|
||||
<script type="text/javascript" src="../../navtreedata.js"></script>
|
||||
<script type="text/javascript" src="../../navtree.js"></script>
|
||||
<script type="text/javascript" src="../../cookie.js"></script>
|
||||
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="../../search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="../../search/search.js"></script>
|
||||
@@ -41,7 +43,7 @@ MathJax.Hub.Config({
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<!-- Generated by Doxygen 1.10.0 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
@@ -53,7 +55,7 @@ var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('../../',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
$(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
@@ -71,7 +73,7 @@ $(function() {
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html','../../'); initResizable(); });
|
||||
$(function(){initNavTree('d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html','../../'); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
@@ -107,7 +109,7 @@ $(document).ready(function(){initNavTree('d2/d8a/classrange__queries_1_1heavy__l
|
||||
<div class="contents">
|
||||
|
||||
<p>The Heavy-Light Decomposition class.
|
||||
<a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#details">More...</a></p>
|
||||
<a href="#details">More...</a></p>
|
||||
<div class="dynheader">
|
||||
Inheritance diagram for range_queries::heavy_light_decomposition::HLD< X >:</div>
|
||||
<div class="dyncontent">
|
||||
@@ -121,19 +123,19 @@ Collaboration diagram for range_queries::heavy_light_decomposition::HLD< X &g
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a6e486767434e44076c1ac374a22da726" id="r_a6e486767434e44076c1ac374a22da726"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a6e486767434e44076c1ac374a22da726">HLD</a> (int nodes)</td></tr>
|
||||
<tr class="memitem:a6e486767434e44076c1ac374a22da726" id="r_a6e486767434e44076c1ac374a22da726"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a6e486767434e44076c1ac374a22da726">HLD</a> (int nodes)</td></tr>
|
||||
<tr class="memdesc:a6e486767434e44076c1ac374a22da726"><td class="mdescLeft"> </td><td class="mdescRight">Class parameterized constructor. Resizes the and initilizes the data members. <br /></td></tr>
|
||||
<tr class="separator:a6e486767434e44076c1ac374a22da726"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae9e979edd69678b85665c01e2ee97828" id="r_ae9e979edd69678b85665c01e2ee97828"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#ae9e979edd69678b85665c01e2ee97828">init</a> ()</td></tr>
|
||||
<tr class="memitem:ae9e979edd69678b85665c01e2ee97828" id="r_ae9e979edd69678b85665c01e2ee97828"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#ae9e979edd69678b85665c01e2ee97828">init</a> ()</td></tr>
|
||||
<tr class="memdesc:ae9e979edd69678b85665c01e2ee97828"><td class="mdescLeft"> </td><td class="mdescRight">This function must be called after the tree adjacency list and node values are populated The function initializes the required parametes, and populates the segment tree. <br /></td></tr>
|
||||
<tr class="separator:ae9e979edd69678b85665c01e2ee97828"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a9f1cb54ed09fde931bf3220d75ee4c57" id="r_a9f1cb54ed09fde931bf3220d75ee4c57"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a9f1cb54ed09fde931bf3220d75ee4c57">update</a> (int <a class="el" href="../../d5/da1/structnode.html">node</a>, X val)</td></tr>
|
||||
<tr class="memitem:a9f1cb54ed09fde931bf3220d75ee4c57" id="r_a9f1cb54ed09fde931bf3220d75ee4c57"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a9f1cb54ed09fde931bf3220d75ee4c57">update</a> (int <a class="el" href="../../d5/da1/structnode.html">node</a>, X val)</td></tr>
|
||||
<tr class="memdesc:a9f1cb54ed09fde931bf3220d75ee4c57"><td class="mdescLeft"> </td><td class="mdescRight">This function updates the value at node with val. <br /></td></tr>
|
||||
<tr class="separator:a9f1cb54ed09fde931bf3220d75ee4c57"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a4dfbf5d9df825eeb63b294c6849bdcab" id="r_a4dfbf5d9df825eeb63b294c6849bdcab"><td class="memItemLeft" align="right" valign="top">X </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a4dfbf5d9df825eeb63b294c6849bdcab">query</a> (int a, int b)</td></tr>
|
||||
<tr class="memitem:a4dfbf5d9df825eeb63b294c6849bdcab" id="r_a4dfbf5d9df825eeb63b294c6849bdcab"><td class="memItemLeft" align="right" valign="top">X </td><td class="memItemRight" valign="bottom"><a class="el" href="#a4dfbf5d9df825eeb63b294c6849bdcab">query</a> (int a, int b)</td></tr>
|
||||
<tr class="memdesc:a4dfbf5d9df825eeb63b294c6849bdcab"><td class="mdescLeft"> </td><td class="mdescRight">This function returns the sum of node values in the simple path from from node_1 to node_2. <br /></td></tr>
|
||||
<tr class="separator:a4dfbf5d9df825eeb63b294c6849bdcab"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="inherit_header pub_methods_classrange__queries_1_1heavy__light__decomposition_1_1_tree"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classrange__queries_1_1heavy__light__decomposition_1_1_tree')"><img src="../../closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html">range_queries::heavy_light_decomposition::Tree< X ></a></td></tr>
|
||||
<tr class="inherit_header pub_methods_classrange__queries_1_1heavy__light__decomposition_1_1_tree"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classrange__queries_1_1heavy__light__decomposition_1_1_tree')"><img src="../../closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html">range_queries::heavy_light_decomposition::Tree< X ></a></td></tr>
|
||||
<tr class="memitem:a835fb2bbb27307b8cacad9b287968bc1 inherit pub_methods_classrange__queries_1_1heavy__light__decomposition_1_1_tree" id="r_a835fb2bbb27307b8cacad9b287968bc1"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a835fb2bbb27307b8cacad9b287968bc1">Tree</a> (int nodes)</td></tr>
|
||||
<tr class="memdesc:a835fb2bbb27307b8cacad9b287968bc1 inherit pub_methods_classrange__queries_1_1heavy__light__decomposition_1_1_tree"><td class="mdescLeft"> </td><td class="mdescRight">Class parameterized constructor, resizes the and initializes the data members. <br /></td></tr>
|
||||
<tr class="separator:a835fb2bbb27307b8cacad9b287968bc1 inherit pub_methods_classrange__queries_1_1heavy__light__decomposition_1_1_tree"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
@@ -161,16 +163,16 @@ Public Member Functions</h2></td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-methods" name="pri-methods"></a>
|
||||
Private Member Functions</h2></td></tr>
|
||||
<tr class="memitem:af64848d6630c39d0f09ce2359cc7c4f8" id="r_af64848d6630c39d0f09ce2359cc7c4f8"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#af64848d6630c39d0f09ce2359cc7c4f8">dfs_hc</a> (int u, int p=-1)</td></tr>
|
||||
<tr class="memitem:af64848d6630c39d0f09ce2359cc7c4f8" id="r_af64848d6630c39d0f09ce2359cc7c4f8"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#af64848d6630c39d0f09ce2359cc7c4f8">dfs_hc</a> (int u, int p=-1)</td></tr>
|
||||
<tr class="memdesc:af64848d6630c39d0f09ce2359cc7c4f8"><td class="mdescLeft"> </td><td class="mdescRight">Utility function to assign heavy child to each node (-1 for a leaf node) <br /></td></tr>
|
||||
<tr class="separator:af64848d6630c39d0f09ce2359cc7c4f8"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a2dfbda148aad0bfaba2ebfda9ebc915a" id="r_a2dfbda148aad0bfaba2ebfda9ebc915a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a">dfs_par</a> (int u, int p=-1)</td></tr>
|
||||
<tr class="memitem:a2dfbda148aad0bfaba2ebfda9ebc915a" id="r_a2dfbda148aad0bfaba2ebfda9ebc915a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a2dfbda148aad0bfaba2ebfda9ebc915a">dfs_par</a> (int u, int p=-1)</td></tr>
|
||||
<tr class="memdesc:a2dfbda148aad0bfaba2ebfda9ebc915a"><td class="mdescLeft"> </td><td class="mdescRight">Utility function to assign highest parent that can be reached though heavy chains. <br /></td></tr>
|
||||
<tr class="separator:a2dfbda148aad0bfaba2ebfda9ebc915a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a0579062b384e54b611b80c6337c7f2c8" id="r_a0579062b384e54b611b80c6337c7f2c8"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8">dfs_labels</a> (int u, int p=-1)</td></tr>
|
||||
<tr class="memitem:a0579062b384e54b611b80c6337c7f2c8" id="r_a0579062b384e54b611b80c6337c7f2c8"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a0579062b384e54b611b80c6337c7f2c8">dfs_labels</a> (int u, int p=-1)</td></tr>
|
||||
<tr class="memdesc:a0579062b384e54b611b80c6337c7f2c8"><td class="mdescLeft"> </td><td class="mdescRight">Utility function to lable the nodes so that heavy chains have a contigous lable. <br /></td></tr>
|
||||
<tr class="separator:a0579062b384e54b611b80c6337c7f2c8"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a7d5b40c076347a6aabfb37a0590f2f24" id="r_a7d5b40c076347a6aabfb37a0590f2f24"><td class="memItemLeft" align="right" valign="top">X </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a7d5b40c076347a6aabfb37a0590f2f24">chain_query</a> (int a, int b)</td></tr>
|
||||
<tr class="memitem:a7d5b40c076347a6aabfb37a0590f2f24" id="r_a7d5b40c076347a6aabfb37a0590f2f24"><td class="memItemLeft" align="right" valign="top">X </td><td class="memItemRight" valign="bottom"><a class="el" href="#a7d5b40c076347a6aabfb37a0590f2f24">chain_query</a> (int a, int b)</td></tr>
|
||||
<tr class="memdesc:a7d5b40c076347a6aabfb37a0590f2f24"><td class="mdescLeft"> </td><td class="mdescRight">Utility function to break down a path query into two chain queries. <br /></td></tr>
|
||||
<tr class="separator:a7d5b40c076347a6aabfb37a0590f2f24"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
@@ -178,7 +180,7 @@ Private Member Functions</h2></td></tr>
|
||||
Private Attributes</h2></td></tr>
|
||||
<tr class="memitem:a722cc7cf2c3e4d15583601a48b09776f" id="r_a722cc7cf2c3e4d15583601a48b09776f"><td class="memItemLeft" align="right" valign="top"><a id="a722cc7cf2c3e4d15583601a48b09776f" name="a722cc7cf2c3e4d15583601a48b09776f"></a>
|
||||
int </td><td class="memItemRight" valign="bottom"><b>label</b></td></tr>
|
||||
<tr class="memdesc:a722cc7cf2c3e4d15583601a48b09776f"><td class="mdescLeft"> </td><td class="mdescRight">utility member to assign labels in <a class="el" 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.">dfs_labels()</a> <br /></td></tr>
|
||||
<tr class="memdesc:a722cc7cf2c3e4d15583601a48b09776f"><td class="mdescLeft"> </td><td class="mdescRight">utility member to assign labels in <a class="el" href="#a0579062b384e54b611b80c6337c7f2c8" title="Utility function to lable the nodes so that heavy chains have a contigous lable.">dfs_labels()</a> <br /></td></tr>
|
||||
<tr class="separator:a722cc7cf2c3e4d15583601a48b09776f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aa86a91ae0cd7898990a8170a2f2c9cda" id="r_aa86a91ae0cd7898990a8170a2f2c9cda"><td class="memItemLeft" align="right" valign="top"><a id="aa86a91ae0cd7898990a8170a2f2c9cda" name="aa86a91ae0cd7898990a8170a2f2c9cda"></a>
|
||||
<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< int > </td><td class="memItemRight" valign="bottom"><b>h_label</b></td></tr>
|
||||
@@ -217,8 +219,7 @@ template<typename X > </div>
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html">range_queries::heavy_light_decomposition::HLD</a>< X >::HLD </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>nodes</em></td><td>)</td>
|
||||
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>nodes</em></span></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -238,18 +239,18 @@ template<typename X > </div>
|
||||
</dl>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 435</span> : Tree<X>(nodes), SG<X>(nodes) {</div>
|
||||
<div class="line"><span class="lineno"> 436</span> <span class="comment">/* Initialization and resize vectors */</span></div>
|
||||
<div class="line"><span class="lineno"> 437</span> <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a722cc7cf2c3e4d15583601a48b09776f">label</a> = 0;</div>
|
||||
<div class="line"><span class="lineno"> 438</span> <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/assign.html">assign</a>(<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">Tree<X>::t_nodes</a>, -1);</div>
|
||||
<div class="line"><span class="lineno"> 439</span> <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/assign.html">assign</a>(<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">Tree<X>::t_nodes</a>, -1);</div>
|
||||
<div class="line"><span class="lineno"> 440</span> <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/resize.html">resize</a>(<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">Tree<X>::t_nodes</a>);</div>
|
||||
<div class="line"><span class="lineno"> 441</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/iota.html">iota</a>(<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/begin.html">begin</a>(), <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/end.html">end</a>(), 0);</div>
|
||||
<div class="line"><span class="lineno"> 437</span> <a class="code hl_variable" href="#a722cc7cf2c3e4d15583601a48b09776f">label</a> = 0;</div>
|
||||
<div class="line"><span class="lineno"> 438</span> <a class="code hl_variable" href="#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/assign.html">assign</a>(<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">Tree<X>::t_nodes</a>, -1);</div>
|
||||
<div class="line"><span class="lineno"> 439</span> <a class="code hl_variable" href="#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/assign.html">assign</a>(<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">Tree<X>::t_nodes</a>, -1);</div>
|
||||
<div class="line"><span class="lineno"> 440</span> <a class="code hl_variable" href="#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/resize.html">resize</a>(<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">Tree<X>::t_nodes</a>);</div>
|
||||
<div class="line"><span class="lineno"> 441</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/iota.html">iota</a>(<a class="code hl_variable" href="#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/begin.html">begin</a>(), <a class="code hl_variable" href="#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/end.html">end</a>(), 0);</div>
|
||||
<div class="line"><span class="lineno"> 442</span> }</div>
|
||||
<div class="ttc" id="aassign_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/assign.html">std::vector::assign</a></div><div class="ttdeci">T assign(T... args)</div></div>
|
||||
<div class="ttc" id="abegin_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/begin.html">std::vector::begin</a></div><div class="ttdeci">T begin(T... args)</div></div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a1b336474d17eff1aa4be73d4068dc725"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">range_queries::heavy_light_decomposition::HLD::h_parent</a></div><div class="ttdeci">std::vector< int > h_parent</div><div class="ttdoc">stores the top of the heavy chain from a node</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:341</div></div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a722cc7cf2c3e4d15583601a48b09776f"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a722cc7cf2c3e4d15583601a48b09776f">range_queries::heavy_light_decomposition::HLD::label</a></div><div class="ttdeci">int label</div><div class="ttdoc">utility member to assign labels in dfs_labels()</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:338</div></div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a84424f180f12b514eaab57a6aa20b104"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">range_queries::heavy_light_decomposition::HLD::h_heavychlid</a></div><div class="ttdeci">std::vector< int > h_heavychlid</div><div class="ttdoc">stores the heavy child of a node</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:340</div></div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_aa86a91ae0cd7898990a8170a2f2c9cda"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">range_queries::heavy_light_decomposition::HLD::h_label</a></div><div class="ttdeci">std::vector< int > h_label</div><div class="ttdoc">stores the label of a node</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:339</div></div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a1b336474d17eff1aa4be73d4068dc725"><div class="ttname"><a href="#a1b336474d17eff1aa4be73d4068dc725">range_queries::heavy_light_decomposition::HLD::h_parent</a></div><div class="ttdeci">std::vector< int > h_parent</div><div class="ttdoc">stores the top of the heavy chain from a node</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:341</div></div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a722cc7cf2c3e4d15583601a48b09776f"><div class="ttname"><a href="#a722cc7cf2c3e4d15583601a48b09776f">range_queries::heavy_light_decomposition::HLD::label</a></div><div class="ttdeci">int label</div><div class="ttdoc">utility member to assign labels in dfs_labels()</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:338</div></div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a84424f180f12b514eaab57a6aa20b104"><div class="ttname"><a href="#a84424f180f12b514eaab57a6aa20b104">range_queries::heavy_light_decomposition::HLD::h_heavychlid</a></div><div class="ttdeci">std::vector< int > h_heavychlid</div><div class="ttdoc">stores the heavy child of a node</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:340</div></div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_aa86a91ae0cd7898990a8170a2f2c9cda"><div class="ttname"><a href="#aa86a91ae0cd7898990a8170a2f2c9cda">range_queries::heavy_light_decomposition::HLD::h_label</a></div><div class="ttdeci">std::vector< int > h_label</div><div class="ttdoc">stores the label of a node</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:339</div></div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_ae4630fa70a80a1dc65a875488a67178a"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">range_queries::heavy_light_decomposition::Tree::t_nodes</a></div><div class="ttdeci">const int t_nodes</div><div class="ttdoc">number of nodes</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:84</div></div>
|
||||
<div class="ttc" id="aend_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/end.html">std::vector::end</a></div><div class="ttdeci">T end(T... args)</div></div>
|
||||
<div class="ttc" id="aiota_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/iota.html">std::iota</a></div><div class="ttdeci">T iota(T... args)</div></div>
|
||||
@@ -272,19 +273,12 @@ template<typename X > </div>
|
||||
<tr>
|
||||
<td class="memname">X <a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html">range_queries::heavy_light_decomposition::HLD</a>< X >::chain_query </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>a</em>, </td>
|
||||
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>a</em>, </span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>b</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>b</em></span> )</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
@@ -309,13 +303,13 @@ template<typename X > </div>
|
||||
<div class="line"><span class="lineno"> 412</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/algorithm/swap.html">std::swap</a>(a, b);</div>
|
||||
<div class="line"><span class="lineno"> 413</span> }</div>
|
||||
<div class="line"><span class="lineno"> 414</span> <span class="keywordflow">while</span> (<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree<X>::t_depth</a>[a] >= <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree<X>::t_depth</a>[b]) {</div>
|
||||
<div class="line"><span class="lineno"> 415</span> <span class="keywordtype">int</span> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a6d8df83a6f26ce24a75d3b358b7f5b8a">l</a> = <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[a]];</div>
|
||||
<div class="line"><span class="lineno"> 416</span> <span class="keywordtype">int</span> r = <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[a];</div>
|
||||
<div class="line"><span class="lineno"> 417</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree<X>::t_depth</a>[<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[a]] < <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree<X>::t_depth</a>[b]) {</div>
|
||||
<div class="line"><span class="lineno"> 418</span> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a6d8df83a6f26ce24a75d3b358b7f5b8a">l</a> += <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree<X>::t_depth</a>[b] - <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree<X>::t_depth</a>[<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[a]];</div>
|
||||
<div class="line"><span class="lineno"> 415</span> <span class="keywordtype">int</span> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a6d8df83a6f26ce24a75d3b358b7f5b8a">l</a> = <a class="code hl_variable" href="#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[<a class="code hl_variable" href="#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[a]];</div>
|
||||
<div class="line"><span class="lineno"> 416</span> <span class="keywordtype">int</span> r = <a class="code hl_variable" href="#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[a];</div>
|
||||
<div class="line"><span class="lineno"> 417</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree<X>::t_depth</a>[<a class="code hl_variable" href="#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[a]] < <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree<X>::t_depth</a>[b]) {</div>
|
||||
<div class="line"><span class="lineno"> 418</span> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a6d8df83a6f26ce24a75d3b358b7f5b8a">l</a> += <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree<X>::t_depth</a>[b] - <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a0efd0b9c564092f443ca97030d866ef1">Tree<X>::t_depth</a>[<a class="code hl_variable" href="#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[a]];</div>
|
||||
<div class="line"><span class="lineno"> 419</span> }</div>
|
||||
<div class="line"><span class="lineno"> 420</span> ret = <a class="code hl_function" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a41c733f5f5e262b308f7cb95c88c1e74">SG<X>::combine</a>(ret, <a class="code hl_function" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a1fda852e6e522707fd97f61cdb0a2591">SG<X>::query</a>(l, r));</div>
|
||||
<div class="line"><span class="lineno"> 421</span> a = <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a350157a5fb79f76fceae33fc84171203">Tree<X>::t_par</a>[<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[a]][0];</div>
|
||||
<div class="line"><span class="lineno"> 421</span> a = <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a350157a5fb79f76fceae33fc84171203">Tree<X>::t_par</a>[<a class="code hl_variable" href="#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[a]][0];</div>
|
||||
<div class="line"><span class="lineno"> 422</span> <span class="keywordflow">if</span> (a == -1) {</div>
|
||||
<div class="line"><span class="lineno"> 423</span> <span class="keywordflow">break</span>;</div>
|
||||
<div class="line"><span class="lineno"> 424</span> }</div>
|
||||
@@ -351,19 +345,12 @@ template<typename X > </div>
|
||||
<tr>
|
||||
<td class="memname">void <a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html">range_queries::heavy_light_decomposition::HLD</a>< X >::dfs_hc </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>u</em>, </td>
|
||||
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>u</em>, </span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>p</em> = <code>-1</code> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>p</em><span class="paramdefsep"> = </span><span class="paramdefval">-1</span></span> )</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
@@ -386,16 +373,16 @@ template<typename X > </div>
|
||||
<div class="line"><span class="lineno"> 351</span> <span class="keywordtype">int</span> hc_size = -1, hc_id = -1;</div>
|
||||
<div class="line"><span class="lineno"> 352</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">int</span> &v : <a class="code hl_function" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a835fb2bbb27307b8cacad9b287968bc1">Tree</a><X>::<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ab1aeaefa1bd97b867c652ba916fbdb43">t_adj</a>[u]) {</div>
|
||||
<div class="line"><span class="lineno"> 353</span> <span class="keywordflow">if</span> (v ^ p) {</div>
|
||||
<div class="line"><span class="lineno"> 354</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#af64848d6630c39d0f09ce2359cc7c4f8">dfs_hc</a>(v, u);</div>
|
||||
<div class="line"><span class="lineno"> 354</span> <a class="code hl_function" href="#af64848d6630c39d0f09ce2359cc7c4f8">dfs_hc</a>(v, u);</div>
|
||||
<div class="line"><span class="lineno"> 355</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ada1494fccbc7f1f07b2f9be9f7e07ad5">Tree<X>::t_size</a>[v] > hc_size) {</div>
|
||||
<div class="line"><span class="lineno"> 356</span> hc_size = <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ada1494fccbc7f1f07b2f9be9f7e07ad5">Tree<X>::t_size</a>[v];</div>
|
||||
<div class="line"><span class="lineno"> 357</span> hc_id = v;</div>
|
||||
<div class="line"><span class="lineno"> 358</span> }</div>
|
||||
<div class="line"><span class="lineno"> 359</span> }</div>
|
||||
<div class="line"><span class="lineno"> 360</span> }</div>
|
||||
<div class="line"><span class="lineno"> 361</span> <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u] = hc_id;</div>
|
||||
<div class="line"><span class="lineno"> 361</span> <a class="code hl_variable" href="#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u] = hc_id;</div>
|
||||
<div class="line"><span class="lineno"> 362</span> }</div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_af64848d6630c39d0f09ce2359cc7c4f8"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#af64848d6630c39d0f09ce2359cc7c4f8">range_queries::heavy_light_decomposition::HLD::dfs_hc</a></div><div class="ttdeci">void dfs_hc(int u, int p=-1)</div><div class="ttdoc">Utility function to assign heavy child to each node (-1 for a leaf node)</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:350</div></div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_af64848d6630c39d0f09ce2359cc7c4f8"><div class="ttname"><a href="#af64848d6630c39d0f09ce2359cc7c4f8">range_queries::heavy_light_decomposition::HLD::dfs_hc</a></div><div class="ttdeci">void dfs_hc(int u, int p=-1)</div><div class="ttdoc">Utility function to assign heavy child to each node (-1 for a leaf node)</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:350</div></div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_a835fb2bbb27307b8cacad9b287968bc1"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a835fb2bbb27307b8cacad9b287968bc1">range_queries::heavy_light_decomposition::Tree::Tree</a></div><div class="ttdeci">Tree(int nodes)</div><div class="ttdoc">Class parameterized constructor, resizes the and initializes the data members.</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:140</div></div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_ab1aeaefa1bd97b867c652ba916fbdb43"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ab1aeaefa1bd97b867c652ba916fbdb43">range_queries::heavy_light_decomposition::Tree::t_adj</a></div><div class="ttdeci">std::vector< std::list< int > > t_adj</div><div class="ttdoc">an adjacency list to stores the tree edges</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:83</div></div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_ada1494fccbc7f1f07b2f9be9f7e07ad5"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ada1494fccbc7f1f07b2f9be9f7e07ad5">range_queries::heavy_light_decomposition::Tree::t_size</a></div><div class="ttdeci">std::vector< int > t_size</div><div class="ttdoc">a vector to store the subtree size rooted at node</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:89</div></div>
|
||||
@@ -421,19 +408,12 @@ template<typename X > </div>
|
||||
<tr>
|
||||
<td class="memname">void <a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html">range_queries::heavy_light_decomposition::HLD</a>< X >::dfs_labels </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>u</em>, </td>
|
||||
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>u</em>, </span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>p</em> = <code>-1</code> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>p</em><span class="paramdefsep"> = </span><span class="paramdefval">-1</span></span> )</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
@@ -453,17 +433,17 @@ template<typename X > </div>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 390</span> {</div>
|
||||
<div class="line"><span class="lineno"> 391</span> <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[u] = <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a722cc7cf2c3e4d15583601a48b09776f">label</a>++;</div>
|
||||
<div class="line"><span class="lineno"> 392</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u] != -1) {</div>
|
||||
<div class="line"><span class="lineno"> 393</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8">dfs_labels</a>(<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u], u);</div>
|
||||
<div class="line"><span class="lineno"> 391</span> <a class="code hl_variable" href="#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[u] = <a class="code hl_variable" href="#a722cc7cf2c3e4d15583601a48b09776f">label</a>++;</div>
|
||||
<div class="line"><span class="lineno"> 392</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u] != -1) {</div>
|
||||
<div class="line"><span class="lineno"> 393</span> <a class="code hl_function" href="#a0579062b384e54b611b80c6337c7f2c8">dfs_labels</a>(<a class="code hl_variable" href="#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u], u);</div>
|
||||
<div class="line"><span class="lineno"> 394</span> }</div>
|
||||
<div class="line"><span class="lineno"> 395</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">int</span> &v : <a class="code hl_function" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a835fb2bbb27307b8cacad9b287968bc1">Tree</a><X>::<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ab1aeaefa1bd97b867c652ba916fbdb43">t_adj</a>[u]) {</div>
|
||||
<div class="line"><span class="lineno"> 396</span> <span class="keywordflow">if</span> (v ^ p and v ^ <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u]) {</div>
|
||||
<div class="line"><span class="lineno"> 397</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8">dfs_labels</a>(v, u);</div>
|
||||
<div class="line"><span class="lineno"> 396</span> <span class="keywordflow">if</span> (v ^ p and v ^ <a class="code hl_variable" href="#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u]) {</div>
|
||||
<div class="line"><span class="lineno"> 397</span> <a class="code hl_function" href="#a0579062b384e54b611b80c6337c7f2c8">dfs_labels</a>(v, u);</div>
|
||||
<div class="line"><span class="lineno"> 398</span> }</div>
|
||||
<div class="line"><span class="lineno"> 399</span> }</div>
|
||||
<div class="line"><span class="lineno"> 400</span> }</div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a0579062b384e54b611b80c6337c7f2c8"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8">range_queries::heavy_light_decomposition::HLD::dfs_labels</a></div><div class="ttdeci">void dfs_labels(int u, int p=-1)</div><div class="ttdoc">Utility function to lable the nodes so that heavy chains have a contigous lable.</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:390</div></div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a0579062b384e54b611b80c6337c7f2c8"><div class="ttname"><a href="#a0579062b384e54b611b80c6337c7f2c8">range_queries::heavy_light_decomposition::HLD::dfs_labels</a></div><div class="ttdeci">void dfs_labels(int u, int p=-1)</div><div class="ttdoc">Utility function to lable the nodes so that heavy chains have a contigous lable.</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:390</div></div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
<div class="dyncontent">
|
||||
@@ -486,19 +466,12 @@ template<typename X > </div>
|
||||
<tr>
|
||||
<td class="memname">void <a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html">range_queries::heavy_light_decomposition::HLD</a>< X >::dfs_par </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>u</em>, </td>
|
||||
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>u</em>, </span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>p</em> = <code>-1</code> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>p</em><span class="paramdefsep"> = </span><span class="paramdefval">-1</span></span> )</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
@@ -518,17 +491,17 @@ template<typename X > </div>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 371</span> {</div>
|
||||
<div class="line"><span class="lineno"> 372</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u] != -1) {</div>
|
||||
<div class="line"><span class="lineno"> 373</span> <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u]] = <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[u];</div>
|
||||
<div class="line"><span class="lineno"> 374</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a">dfs_par</a>(<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u], u);</div>
|
||||
<div class="line"><span class="lineno"> 372</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u] != -1) {</div>
|
||||
<div class="line"><span class="lineno"> 373</span> <a class="code hl_variable" href="#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[<a class="code hl_variable" href="#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u]] = <a class="code hl_variable" href="#a1b336474d17eff1aa4be73d4068dc725">h_parent</a>[u];</div>
|
||||
<div class="line"><span class="lineno"> 374</span> <a class="code hl_function" href="#a2dfbda148aad0bfaba2ebfda9ebc915a">dfs_par</a>(<a class="code hl_variable" href="#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u], u);</div>
|
||||
<div class="line"><span class="lineno"> 375</span> }</div>
|
||||
<div class="line"><span class="lineno"> 376</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">int</span> &v : <a class="code hl_function" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a835fb2bbb27307b8cacad9b287968bc1">Tree</a><X>::<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ab1aeaefa1bd97b867c652ba916fbdb43">t_adj</a>[u]) {</div>
|
||||
<div class="line"><span class="lineno"> 377</span> <span class="keywordflow">if</span> (v ^ p and v ^ <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u]) {</div>
|
||||
<div class="line"><span class="lineno"> 378</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a">dfs_par</a>(v, u);</div>
|
||||
<div class="line"><span class="lineno"> 377</span> <span class="keywordflow">if</span> (v ^ p and v ^ <a class="code hl_variable" href="#a84424f180f12b514eaab57a6aa20b104">h_heavychlid</a>[u]) {</div>
|
||||
<div class="line"><span class="lineno"> 378</span> <a class="code hl_function" href="#a2dfbda148aad0bfaba2ebfda9ebc915a">dfs_par</a>(v, u);</div>
|
||||
<div class="line"><span class="lineno"> 379</span> }</div>
|
||||
<div class="line"><span class="lineno"> 380</span> }</div>
|
||||
<div class="line"><span class="lineno"> 381</span> }</div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a2dfbda148aad0bfaba2ebfda9ebc915a"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a">range_queries::heavy_light_decomposition::HLD::dfs_par</a></div><div class="ttdeci">void dfs_par(int u, int p=-1)</div><div class="ttdoc">Utility function to assign highest parent that can be reached though heavy chains.</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:371</div></div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a2dfbda148aad0bfaba2ebfda9ebc915a"><div class="ttname"><a href="#a2dfbda148aad0bfaba2ebfda9ebc915a">range_queries::heavy_light_decomposition::HLD::dfs_par</a></div><div class="ttdeci">void dfs_par(int u, int p=-1)</div><div class="ttdoc">Utility function to assign highest parent that can be reached though heavy chains.</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:371</div></div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
<div class="dyncontent">
|
||||
@@ -551,7 +524,7 @@ template<typename X > </div>
|
||||
<tr>
|
||||
<td class="memname">void <a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html">range_queries::heavy_light_decomposition::HLD</a>< X >::init </td>
|
||||
<td>(</td>
|
||||
<td class="paramname"></td><td>)</td>
|
||||
<td class="paramname"><span class="paramname"></span></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -568,14 +541,14 @@ template<typename X > </div>
|
||||
<div class="line"><span class="lineno"> 451</span> <a class="code hl_function" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ad22d760a5a33545a70e7ea5e1786c8dc">Tree<X>::init</a>();</div>
|
||||
<div class="line"><span class="lineno"> 452</span> </div>
|
||||
<div class="line"><span class="lineno"> 453</span> <span class="comment">// Fill the heavy child, greatest parent, and labels</span></div>
|
||||
<div class="line"><span class="lineno"> 454</span> <a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a722cc7cf2c3e4d15583601a48b09776f">label</a> = 0;</div>
|
||||
<div class="line"><span class="lineno"> 455</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#af64848d6630c39d0f09ce2359cc7c4f8">dfs_hc</a>(<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa6c37e840355b9fb2105181c578694e8">Tree<X>::t_root</a>);</div>
|
||||
<div class="line"><span class="lineno"> 456</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a2dfbda148aad0bfaba2ebfda9ebc915a">dfs_par</a>(<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa6c37e840355b9fb2105181c578694e8">Tree<X>::t_root</a>);</div>
|
||||
<div class="line"><span class="lineno"> 457</span> <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a0579062b384e54b611b80c6337c7f2c8">dfs_labels</a>(<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa6c37e840355b9fb2105181c578694e8">Tree<X>::t_root</a>);</div>
|
||||
<div class="line"><span class="lineno"> 454</span> <a class="code hl_variable" href="#a722cc7cf2c3e4d15583601a48b09776f">label</a> = 0;</div>
|
||||
<div class="line"><span class="lineno"> 455</span> <a class="code hl_function" href="#af64848d6630c39d0f09ce2359cc7c4f8">dfs_hc</a>(<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa6c37e840355b9fb2105181c578694e8">Tree<X>::t_root</a>);</div>
|
||||
<div class="line"><span class="lineno"> 456</span> <a class="code hl_function" href="#a2dfbda148aad0bfaba2ebfda9ebc915a">dfs_par</a>(<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa6c37e840355b9fb2105181c578694e8">Tree<X>::t_root</a>);</div>
|
||||
<div class="line"><span class="lineno"> 457</span> <a class="code hl_function" href="#a0579062b384e54b611b80c6337c7f2c8">dfs_labels</a>(<a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#aa6c37e840355b9fb2105181c578694e8">Tree<X>::t_root</a>);</div>
|
||||
<div class="line"><span class="lineno"> 458</span> </div>
|
||||
<div class="line"><span class="lineno"> 459</span> <span class="comment">// Segment Tree Initialization</span></div>
|
||||
<div class="line"><span class="lineno"> 460</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < Tree<X>::t_nodes; i++) {</div>
|
||||
<div class="line"><span class="lineno"> 461</span> <a class="code hl_variable" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#afbf8a9cb9449d5ca844f4e141a801e6a">SG<X>::s_tree</a>[<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[i] + <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">Tree<X>::t_nodes</a>] = <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">Tree<X>::t_val</a>[i];</div>
|
||||
<div class="line"><span class="lineno"> 461</span> <a class="code hl_variable" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#afbf8a9cb9449d5ca844f4e141a801e6a">SG<X>::s_tree</a>[<a class="code hl_variable" href="#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[i] + <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">Tree<X>::t_nodes</a>] = <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">Tree<X>::t_val</a>[i];</div>
|
||||
<div class="line"><span class="lineno"> 462</span> }</div>
|
||||
<div class="line"><span class="lineno"> 463</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae4630fa70a80a1dc65a875488a67178a">Tree<X>::t_nodes</a> - 1; i > 0; i--) {</div>
|
||||
<div class="line"><span class="lineno"> 464</span> <a class="code hl_variable" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#afbf8a9cb9449d5ca844f4e141a801e6a">SG<X>::s_tree</a>[i] =</div>
|
||||
@@ -608,19 +581,12 @@ template<typename X > </div>
|
||||
<tr>
|
||||
<td class="memname">X <a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html">range_queries::heavy_light_decomposition::HLD</a>< X ><a class="el" href="../../dd/d1b/structquery.html">::query</a> </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>a</em>, </td>
|
||||
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>a</em>, </span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>b</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>b</em></span> )</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
@@ -643,11 +609,11 @@ template<typename X > </div>
|
||||
<div class="line"><span class="lineno"> 490</span> <span class="keywordtype">int</span> lc = <a class="code hl_function" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae2b407e64aaf9878fbee7ee6efe9c7d4">Tree<X>::lca</a>(a, b);</div>
|
||||
<div class="line"><span class="lineno"> 491</span> X ret = <a class="code hl_variable" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#aa7f93971a9f891e0bbb7023081f379d5">SG<X>::sret_init</a>;</div>
|
||||
<div class="line"><span class="lineno"> 492</span> assert(lc != -1);</div>
|
||||
<div class="line"><span class="lineno"> 493</span> ret += <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a7d5b40c076347a6aabfb37a0590f2f24">chain_query</a>(a, lc);</div>
|
||||
<div class="line"><span class="lineno"> 494</span> ret += <a class="code hl_function" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a7d5b40c076347a6aabfb37a0590f2f24">chain_query</a>(b, lc);</div>
|
||||
<div class="line"><span class="lineno"> 493</span> ret += <a class="code hl_function" href="#a7d5b40c076347a6aabfb37a0590f2f24">chain_query</a>(a, lc);</div>
|
||||
<div class="line"><span class="lineno"> 494</span> ret += <a class="code hl_function" href="#a7d5b40c076347a6aabfb37a0590f2f24">chain_query</a>(b, lc);</div>
|
||||
<div class="line"><span class="lineno"> 495</span> <span class="keywordflow">return</span> ret - <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">Tree<X>::t_val</a>[lc];</div>
|
||||
<div class="line"><span class="lineno"> 496</span> }</div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a7d5b40c076347a6aabfb37a0590f2f24"><div class="ttname"><a href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#a7d5b40c076347a6aabfb37a0590f2f24">range_queries::heavy_light_decomposition::HLD::chain_query</a></div><div class="ttdeci">X chain_query(int a, int b)</div><div class="ttdoc">Utility function to break down a path query into two chain queries.</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:409</div></div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_h_l_d_html_a7d5b40c076347a6aabfb37a0590f2f24"><div class="ttname"><a href="#a7d5b40c076347a6aabfb37a0590f2f24">range_queries::heavy_light_decomposition::HLD::chain_query</a></div><div class="ttdeci">X chain_query(int a, int b)</div><div class="ttdoc">Utility function to break down a path query into two chain queries.</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:409</div></div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_tree_html_ae2b407e64aaf9878fbee7ee6efe9c7d4"><div class="ttname"><a href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#ae2b407e64aaf9878fbee7ee6efe9c7d4">range_queries::heavy_light_decomposition::Tree::lca</a></div><div class="ttdeci">int lca(int a, int b)</div><div class="ttdoc">The function returns the least common ancestor of two nodes.</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:229</div></div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
@@ -671,19 +637,12 @@ template<typename X > </div>
|
||||
<tr>
|
||||
<td class="memname">void <a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html">range_queries::heavy_light_decomposition::HLD</a>< X >::update </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>node</em>, </td>
|
||||
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>node</em>, </span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">X </td>
|
||||
<td class="paramname"><em>val</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
<td class="paramtype">X</td> <td class="paramname"><span class="paramname"><em>val</em></span> )</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
@@ -703,10 +662,11 @@ template<typename X > </div>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 475</span> {</div>
|
||||
<div class="line"><span class="lineno"> 476</span> X diff = val - <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">Tree<X>::t_val</a>[<a class="code hl_class" href="../../d5/da1/structnode.html">node</a>];</div>
|
||||
<div class="line"><span class="lineno"> 477</span> <a class="code hl_function" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c">SG<X>::update</a>(<a class="code hl_variable" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[<a class="code hl_class" href="../../d5/da1/structnode.html">node</a>], diff);</div>
|
||||
<div class="line"><span class="lineno"> 478</span> <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">Tree<X>::t_val</a>[<a class="code hl_class" href="../../d5/da1/structnode.html">node</a>] = val;</div>
|
||||
<div class="line"><span class="lineno"> 476</span> X diff = val - <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">Tree<X>::t_val</a>[<a class="code hl_typedef" href="../../d8/dee/avltree_8cpp.html#a74f0cf18a0e5b832d9994e2f2d022287">node</a>];</div>
|
||||
<div class="line"><span class="lineno"> 477</span> <a class="code hl_function" href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c">SG<X>::update</a>(<a class="code hl_variable" href="#aa86a91ae0cd7898990a8170a2f2c9cda">h_label</a>[<a class="code hl_class" href="../../d5/da1/structnode.html">node</a>], diff);</div>
|
||||
<div class="line"><span class="lineno"> 478</span> <a class="code hl_variable" href="../../d1/d51/classrange__queries_1_1heavy__light__decomposition_1_1_tree.html#a135b7952593c9b1aae38fcaf1cc1abf7">Tree<X>::t_val</a>[<a class="code hl_typedef" href="../../d8/dee/avltree_8cpp.html#a74f0cf18a0e5b832d9994e2f2d022287">node</a>] = val;</div>
|
||||
<div class="line"><span class="lineno"> 479</span> }</div>
|
||||
<div class="ttc" id="aavltree_8cpp_html_a74f0cf18a0e5b832d9994e2f2d022287"><div class="ttname"><a href="../../d8/dee/avltree_8cpp.html#a74f0cf18a0e5b832d9994e2f2d022287">node</a></div><div class="ttdeci">struct node { int data; int height; struct node *left; struct node *right;} node</div><div class="ttdoc">for std::queue</div><div class="ttdef"><b>Definition</b> avltree.cpp:13</div></div>
|
||||
<div class="ttc" id="aclassrange__queries_1_1heavy__light__decomposition_1_1_s_g_html_a3c75bf5770790f8eba8cc92227b5400c"><div class="ttname"><a href="../../d9/d35/classrange__queries_1_1heavy__light__decomposition_1_1_s_g.html#a3c75bf5770790f8eba8cc92227b5400c">range_queries::heavy_light_decomposition::SG::update</a></div><div class="ttdeci">void update(int p, X v)</div><div class="ttdoc">Update the value at a node.</div><div class="ttdef"><b>Definition</b> heavy_light_decomposition.cpp:293</div></div>
|
||||
<div class="ttc" id="astructnode_html"><div class="ttname"><a href="../../d5/da1/structnode.html">node</a></div><div class="ttdef"><b>Definition</b> binary_search_tree.cpp:11</div></div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
@@ -726,7 +686,7 @@ Here is the call graph for this function:</div>
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="../../dd/d69/namespacerange__queries.html">range_queries</a></li><li class="navelem"><b>heavy_light_decomposition</b></li><li class="navelem"><a class="el" href="../../d2/d8a/classrange__queries_1_1heavy__light__decomposition_1_1_h_l_d.html">HLD</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </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.10.0 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user