Documentation for 93a700c7e9

This commit is contained in:
realstealthninja
2025-05-25 14:24:42 +00:00
parent a868ea9b06
commit e7edde96ab
32 changed files with 1083 additions and 1246 deletions

View File

@@ -160,7 +160,7 @@ $(function(){initNavTree('annotated.html',''); initResizable(true); });
<tr id="row_2_12_" class="odd" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d4/d90/classdata__structures_1_1_skip_list.html" target="_self">SkipList</a></td><td class="desc"></td></tr>
<tr id="row_2_13_" class="odd" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d2/dc8/classdata__structures_1_1_stack.html" target="_self">Stack</a></td><td class="desc">Class representation of a stack </td></tr>
<tr id="row_2_14_" class="odd" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d0/d3e/classdata__structures_1_1trie.html" target="_self">trie</a></td><td class="desc"><a href="https://en.wikipedia.org/wiki/Trie" target="_blank">Trie</a> implementation for small-case English alphabets <code>a-z</code> </td></tr>
<tr id="row_3_" class="odd"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_3_" class="arrow" onclick="dynsection.toggleFolder('3_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="dd/dba/namespacedivide__and__conquer.html" target="_self">divide_and_conquer</a></td><td class="desc">For std::vector </td></tr>
<tr id="row_3_" class="odd"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_3_" class="arrow" onclick="dynsection.toggleFolder('3_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="dd/dba/namespacedivide__and__conquer.html" target="_self">divide_and_conquer</a></td><td class="desc">For IO operations </td></tr>
<tr id="row_3_0_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_3_0_" class="arrow" onclick="dynsection.toggleFolder('3_0_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><b>strassens_multiplication</b></td><td class="desc"></td></tr>
<tr id="row_3_0_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="dc/d13/classdivide__and__conquer_1_1strassens__multiplication_1_1_matrix.html" target="_self">Matrix</a></td><td class="desc"><a class="el" href="dc/d13/classdivide__and__conquer_1_1strassens__multiplication_1_1_matrix.html" title="Matrix class.">Matrix</a> class </td></tr>
<tr id="row_4_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_4_" class="arrow" onclick="dynsection.toggleFolder('4_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="d0/d65/namespacedouble__hashing.html" target="_self">double_hashing</a></td><td class="desc">An implementation of hash table using <a href="https://en.wikipedia.org/wiki/Double_hashing" target="_blank">double hashing</a> algorithm </td></tr>

View File

@@ -1,11 +1,9 @@
<map id="divide_and_conquer/karatsuba_algorithm_for_fast_multiplication.cpp" name="divide_and_conquer/karatsuba_algorithm_for_fast_multiplication.cpp">
<area shape="rect" id="Node000001" title="Implementation of the Karatsuba algorithm for fast multiplication" alt="" coords="78,5,258,61"/>
<area shape="rect" id="Node000001" title="Implementation of the Karatsuba algorithm for fast multiplication" alt="" coords="34,5,214,61"/>
<area shape="rect" id="Node000002" title=" " alt="" coords="5,109,70,135"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="129,64,70,103,67,98,126,59"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="99,63,62,100,59,96,95,59"/>
<area shape="rect" id="Node000003" title=" " alt="" coords="94,109,154,135"/>
<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="157,62,140,96,135,94,152,60"/>
<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="127,61,127,93,122,93,122,61"/>
<area shape="rect" id="Node000004" title=" " alt="" coords="178,109,249,135"/>
<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="185,60,202,94,198,96,180,62"/>
<area shape="rect" id="Node000005" title=" " alt="" coords="273,109,330,135"/>
<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="211,59,272,98,269,103,209,64"/>
<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="154,59,192,96,188,100,150,63"/>
</map>

View File

@@ -1 +1 @@
88881fac6f8f3d3d5e858306308180ca
0e7cb995e918479c83e5f4c704176fe9

View File

@@ -4,8 +4,8 @@
<!-- Generated by graphviz version 12.2.1 (20241206.2353)
-->
<!-- Title: divide_and_conquer/karatsuba_algorithm_for_fast_multiplication.cpp Pages: 1 -->
<svg width="252pt" height="105pt"
viewBox="0.00 0.00 251.62 105.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="191pt" height="105pt"
viewBox="0.00 0.00 190.88 105.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
@@ -23,10 +23,10 @@
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Implementation of the Karatsuba algorithm for fast multiplication">
<polygon fill="#999999" stroke="#666666" points="189.75,-97 54.5,-97 54.5,-55.25 189.75,-55.25 189.75,-97"/>
<text text-anchor="start" x="62.5" y="-83.5" font-family="Helvetica,sans-Serif" font-size="10.00">divide_and_conquer</text>
<text text-anchor="start" x="62.5" y="-72.25" font-family="Helvetica,sans-Serif" font-size="10.00">/karatsuba_algorithm</text>
<text text-anchor="middle" x="122.12" y="-61" font-family="Helvetica,sans-Serif" font-size="10.00">_for_fast_multiplication.cpp</text>
<polygon fill="#999999" stroke="#666666" points="156.75,-97 21.5,-97 21.5,-55.25 156.75,-55.25 156.75,-97"/>
<text text-anchor="start" x="29.5" y="-83.5" font-family="Helvetica,sans-Serif" font-size="10.00">divide_and_conquer</text>
<text text-anchor="start" x="29.5" y="-72.25" font-family="Helvetica,sans-Serif" font-size="10.00">/karatsuba_algorithm</text>
<text text-anchor="middle" x="89.12" y="-61" font-family="Helvetica,sans-Serif" font-size="10.00">_for_fast_multiplication.cpp</text>
</a>
</g>
</g>
@@ -43,8 +43,8 @@
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M91.39,-54.89C77.07,-45.47 60.33,-34.46 47.13,-25.77"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="49.37,-23.05 39.09,-20.48 45.52,-28.9 49.37,-23.05"/>
<path fill="none" stroke="#63b8ff" d="M68.91,-55.07C60.06,-46.29 49.79,-36.09 41.31,-27.68"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="43.9,-25.32 34.34,-20.76 38.97,-30.29 43.9,-25.32"/>
</a>
</g>
</g>
@@ -61,8 +61,8 @@
<g id="edge2_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M111.86,-55.07C107.75,-47.03 103.03,-37.8 98.96,-29.84"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="102.13,-28.35 94.46,-21.04 95.89,-31.54 102.13,-28.35"/>
<path fill="none" stroke="#63b8ff" d="M89.12,-55.07C89.12,-47.4 89.12,-38.64 89.12,-30.95"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="92.63,-31.21 89.13,-21.21 85.63,-31.21 92.63,-31.21"/>
</a>
</g>
</g>
@@ -79,26 +79,8 @@
<g id="edge3_Node000001_Node000004" class="edge">
<title>Node1&#45;&gt;Node4</title>
<g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M132.7,-55.07C136.94,-47.03 141.8,-37.8 146,-29.84"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="149.07,-31.51 150.64,-21.03 142.88,-28.25 149.07,-31.51"/>
</a>
</g>
</g>
<!-- Node5 -->
<g id="Node000005" class="node">
<title>Node5</title>
<g id="a_Node000005"><a xlink:title=" ">
<polygon fill="#e0e0e0" stroke="#999999" points="243.62,-19.25 200.62,-19.25 200.62,0 243.62,0 243.62,-19.25"/>
<text text-anchor="middle" x="222.12" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">vector</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node5 -->
<g id="edge4_Node000001_Node000005" class="edge">
<title>Node1&#45;&gt;Node5</title>
<g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M153.49,-54.89C168.1,-45.47 185.18,-34.46 198.65,-25.77"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="200.36,-28.83 206.87,-20.46 196.57,-22.94 200.36,-28.83"/>
<path fill="none" stroke="#63b8ff" d="M109.96,-55.07C119.08,-46.29 129.67,-36.09 138.41,-27.68"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="140.84,-30.2 145.61,-20.75 135.98,-25.16 140.84,-30.2"/>
</a>
</g>
</g>

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -4,18 +4,18 @@
<!-- Generated by graphviz version 12.2.1 (20241206.2353)
-->
<!-- Title: divide_and_conquer/karatsuba_algorithm_for_fast_multiplication.cpp Pages: 1 -->
<svg width="252pt" height="105pt"
viewBox="0.00 0.00 251.62 105.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="191pt" height="105pt"
viewBox="0.00 0.00 190.88 105.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 101)">
<title>divide_and_conquer/karatsuba_algorithm_for_fast_multiplication.cpp</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Implementation of the Karatsuba algorithm for fast multiplication">
<polygon fill="#999999" stroke="#666666" points="189.75,-97 54.5,-97 54.5,-55.25 189.75,-55.25 189.75,-97"/>
<text text-anchor="start" x="62.5" y="-83.5" font-family="Helvetica,sans-Serif" font-size="10.00">divide_and_conquer</text>
<text text-anchor="start" x="62.5" y="-72.25" font-family="Helvetica,sans-Serif" font-size="10.00">/karatsuba_algorithm</text>
<text text-anchor="middle" x="122.12" y="-61" font-family="Helvetica,sans-Serif" font-size="10.00">_for_fast_multiplication.cpp</text>
<polygon fill="#999999" stroke="#666666" points="156.75,-97 21.5,-97 21.5,-55.25 156.75,-55.25 156.75,-97"/>
<text text-anchor="start" x="29.5" y="-83.5" font-family="Helvetica,sans-Serif" font-size="10.00">divide_and_conquer</text>
<text text-anchor="start" x="29.5" y="-72.25" font-family="Helvetica,sans-Serif" font-size="10.00">/karatsuba_algorithm</text>
<text text-anchor="middle" x="89.12" y="-61" font-family="Helvetica,sans-Serif" font-size="10.00">_for_fast_multiplication.cpp</text>
</a>
</g>
</g>
@@ -32,8 +32,8 @@
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M91.39,-54.89C77.07,-45.47 60.33,-34.46 47.13,-25.77"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="49.37,-23.05 39.09,-20.48 45.52,-28.9 49.37,-23.05"/>
<path fill="none" stroke="#63b8ff" d="M68.91,-55.07C60.06,-46.29 49.79,-36.09 41.31,-27.68"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="43.9,-25.32 34.34,-20.76 38.97,-30.29 43.9,-25.32"/>
</a>
</g>
</g>
@@ -50,8 +50,8 @@
<g id="edge2_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M111.86,-55.07C107.75,-47.03 103.03,-37.8 98.96,-29.84"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="102.13,-28.35 94.46,-21.04 95.89,-31.54 102.13,-28.35"/>
<path fill="none" stroke="#63b8ff" d="M89.12,-55.07C89.12,-47.4 89.12,-38.64 89.12,-30.95"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="92.63,-31.21 89.13,-21.21 85.63,-31.21 92.63,-31.21"/>
</a>
</g>
</g>
@@ -68,26 +68,8 @@
<g id="edge3_Node000001_Node000004" class="edge">
<title>Node1&#45;&gt;Node4</title>
<g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M132.7,-55.07C136.94,-47.03 141.8,-37.8 146,-29.84"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="149.07,-31.51 150.64,-21.03 142.88,-28.25 149.07,-31.51"/>
</a>
</g>
</g>
<!-- Node5 -->
<g id="Node000005" class="node">
<title>Node5</title>
<g id="a_Node000005"><a xlink:title=" ">
<polygon fill="#e0e0e0" stroke="#999999" points="243.62,-19.25 200.62,-19.25 200.62,0 243.62,0 243.62,-19.25"/>
<text text-anchor="middle" x="222.12" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">vector</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node5 -->
<g id="edge4_Node000001_Node000005" class="edge">
<title>Node1&#45;&gt;Node5</title>
<g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M153.49,-54.89C168.1,-45.47 185.18,-34.46 198.65,-25.77"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="200.36,-28.83 206.87,-20.46 196.57,-22.94 200.36,-28.83"/>
<path fill="none" stroke="#63b8ff" d="M109.96,-55.07C119.08,-46.29 129.67,-36.09 138.41,-27.68"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="140.84,-30.2 145.61,-20.75 135.98,-25.16 140.84,-30.2"/>
</a>
</g>
</g>

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -173,7 +173,7 @@ Static Private Attributes</h2></td></tr>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a href="https://en.wikipedia.org/wiki/Trie" target="_blank">Trie</a> implementation for small-case English alphabets <code>a-z</code> </p>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00025">25</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00024">24</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="aab373beb3f618b90922528c68797d988" name="aab373beb3f618b90922528c68797d988"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aab373beb3f618b90922528c68797d988">&#9670;&#160;</a></span>char_to_int()</h2>
@@ -207,19 +207,19 @@ Static Private Attributes</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>unsigned integer index </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00038">38</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 38</span> {</div>
<div class="line"><span class="lineno"> 39</span> <span class="keywordflow">if</span> (ch &gt;= <span class="charliteral">&#39;A&#39;</span> &amp;&amp; ch &lt;= <span class="charliteral">&#39;Z&#39;</span>) {</div>
<div class="line"><span class="lineno"> 40</span> <span class="keywordflow">return</span> ch - <span class="charliteral">&#39;A&#39;</span>;</div>
<div class="line"><span class="lineno"> 41</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ch &gt;= <span class="charliteral">&#39;a&#39;</span> &amp;&amp; ch &lt;= <span class="charliteral">&#39;z&#39;</span>) {</div>
<div class="line"><span class="lineno"> 42</span> <span class="keywordflow">return</span> ch - <span class="charliteral">&#39;a&#39;</span> + <a class="code hl_variable" href="#a4bfac4be6ed1a34c7159eddb42469191">NUM_CHARS</a>;</div>
<div class="line"><span class="lineno"> 43</span> }</div>
<div class="line"><span class="lineno"> 44</span> </div>
<div class="line"><span class="lineno"> 45</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;Invalid character present. Exiting...&quot;</span>;</div>
<div class="line"><span class="lineno"> 46</span> std::exit(EXIT_FAILURE);</div>
<div class="line"><span class="lineno"> 47</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><span class="lineno"> 48</span> }</div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a4bfac4be6ed1a34c7159eddb42469191"><div class="ttname"><a href="#a4bfac4be6ed1a34c7159eddb42469191">data_structures::trie::NUM_CHARS</a></div><div class="ttdeci">static constexpr uint8_t NUM_CHARS</div><div class="ttdoc">Number of alphabets.</div><div class="ttdef"><b>Definition</b> <a href="../../d7/d83/trie__tree_8cpp_source.html#l00027">trie_tree.cpp:27</a></div></div>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00037">37</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 37</span> {</div>
<div class="line"><span class="lineno"> 38</span> <span class="keywordflow">if</span> (ch &gt;= <span class="charliteral">&#39;A&#39;</span> &amp;&amp; ch &lt;= <span class="charliteral">&#39;Z&#39;</span>) {</div>
<div class="line"><span class="lineno"> 39</span> <span class="keywordflow">return</span> ch - <span class="charliteral">&#39;A&#39;</span>;</div>
<div class="line"><span class="lineno"> 40</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ch &gt;= <span class="charliteral">&#39;a&#39;</span> &amp;&amp; ch &lt;= <span class="charliteral">&#39;z&#39;</span>) {</div>
<div class="line"><span class="lineno"> 41</span> <span class="keywordflow">return</span> ch - <span class="charliteral">&#39;a&#39;</span> + <a class="code hl_variable" href="#a4bfac4be6ed1a34c7159eddb42469191">NUM_CHARS</a>;</div>
<div class="line"><span class="lineno"> 42</span> }</div>
<div class="line"><span class="lineno"> 43</span> </div>
<div class="line"><span class="lineno"> 44</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;Invalid character present. Exiting...&quot;</span>;</div>
<div class="line"><span class="lineno"> 45</span> std::exit(EXIT_FAILURE);</div>
<div class="line"><span class="lineno"> 46</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><span class="lineno"> 47</span> }</div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a4bfac4be6ed1a34c7159eddb42469191"><div class="ttname"><a href="#a4bfac4be6ed1a34c7159eddb42469191">data_structures::trie::NUM_CHARS</a></div><div class="ttdeci">static constexpr uint8_t NUM_CHARS</div><div class="ttdoc">Number of alphabets.</div><div class="ttdef"><b>Definition</b> <a href="../../d7/d83/trie__tree_8cpp_source.html#l00026">trie_tree.cpp:26</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -262,48 +262,48 @@ Static Private Attributes</h2></td></tr>
<dd>
<code>false</code> if unsuccessful </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00134">134</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 134</span> {</div>
<div class="line"><span class="lineno"> 135</span> <span class="keywordflow">if</span> (index == str.length()) {</div>
<div class="line"><span class="lineno"> 136</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="#a4cb0f775b5a4bc14a6d39b5c93883eb6">isEndofWord</a>) {</div>
<div class="line"><span class="lineno"> 137</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 138</span> }</div>
<div class="line"><span class="lineno"> 139</span> <a class="code hl_variable" href="#a4cb0f775b5a4bc14a6d39b5c93883eb6">isEndofWord</a> = <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 140</span> <span class="comment">// following lines - possible source of error?</span></div>
<div class="line"><span class="lineno"> 141</span> <span class="comment">// for (int i = 0; i &lt; NUM_CHARS; i++)</span></div>
<div class="line"><span class="lineno"> 142</span> <span class="comment">// if (!arr[i])</span></div>
<div class="line"><span class="lineno"> 143</span> <span class="comment">// return false;</span></div>
<div class="line"><span class="lineno"> 144</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 145</span> }</div>
<div class="line"><span class="lineno"> 146</span> <span class="keywordtype">int</span> j = <a class="code hl_function" href="#aab373beb3f618b90922528c68797d988">char_to_int</a>(str[index]);</div>
<div class="line"><span class="lineno"> 147</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j]) {</div>
<div class="line"><span class="lineno"> 148</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 149</span> }</div>
<div class="line"><span class="lineno"> 150</span> <span class="keywordtype">bool</span> var = <a class="code hl_function" href="#aeac27cfd397d2dd3f2f519efffafeeab">deleteString</a>(str, index + 1);</div>
<div class="line"><span class="lineno"> 151</span> <span class="keywordflow">if</span> (var) {</div>
<div class="line"><span class="lineno"> 152</span> <a class="code hl_variable" href="#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j].reset();</div>
<div class="line"><span class="lineno"> 153</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="#a4cb0f775b5a4bc14a6d39b5c93883eb6">isEndofWord</a>) {</div>
<div class="line"><span class="lineno"> 154</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 155</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><span class="lineno"> 156</span> <span class="keywordtype">int</span> i = 0;</div>
<div class="line"><span class="lineno"> 157</span> <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code hl_variable" href="#a4bfac4be6ed1a34c7159eddb42469191">NUM_CHARS</a>; i++) {</div>
<div class="line"><span class="lineno"> 158</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[i]) {</div>
<div class="line"><span class="lineno"> 159</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 160</span> }</div>
<div class="line"><span class="lineno"> 161</span> }</div>
<div class="line"><span class="lineno"> 162</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 163</span> }</div>
<div class="line"><span class="lineno"> 164</span> }</div>
<div class="line"><span class="lineno"> 165</span> </div>
<div class="line"><span class="lineno"> 166</span> <span class="comment">/* should not return here */</span></div>
<div class="line"><span class="lineno"> 167</span> std::cout &lt;&lt; __func__ &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; __LINE__</div>
<div class="line"><span class="lineno"> 168</span> &lt;&lt; <span class="stringliteral">&quot;Should not reach this line\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 169</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 170</span> }</div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a362dd78748a1f01ab019e55fd6098a8b"><div class="ttname"><a href="#a362dd78748a1f01ab019e55fd6098a8b">data_structures::trie::arr</a></div><div class="ttdeci">std::array&lt; std::shared_ptr&lt; trie &gt;, NUM_CHARS&lt;&lt; 1 &gt; arr</div><div class="ttdoc">Recursive tree nodes as an array of shared-pointers.</div><div class="ttdef"><b>Definition</b> <a href="../../d7/d83/trie__tree_8cpp_source.html#l00029">trie_tree.cpp:29</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a4cb0f775b5a4bc14a6d39b5c93883eb6"><div class="ttname"><a href="#a4cb0f775b5a4bc14a6d39b5c93883eb6">data_structures::trie::isEndofWord</a></div><div class="ttdeci">bool isEndofWord</div><div class="ttdoc">identifier if a node is terminal node</div><div class="ttdef"><b>Definition</b> <a href="../../d7/d83/trie__tree_8cpp_source.html#l00030">trie_tree.cpp:30</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_aab373beb3f618b90922528c68797d988"><div class="ttname"><a href="#aab373beb3f618b90922528c68797d988">data_structures::trie::char_to_int</a></div><div class="ttdeci">uint8_t char_to_int(const char &amp;ch) const</div><div class="ttdoc">Convert a character to integer for indexing.</div><div class="ttdef"><b>Definition</b> <a href="../../d7/d83/trie__tree_8cpp_source.html#l00038">trie_tree.cpp:38</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_aeac27cfd397d2dd3f2f519efffafeeab"><div class="ttname"><a href="#aeac27cfd397d2dd3f2f519efffafeeab">data_structures::trie::deleteString</a></div><div class="ttdeci">bool deleteString(const std::string &amp;str, int index)</div><div class="ttdef"><b>Definition</b> <a href="../../d7/d83/trie__tree_8cpp_source.html#l00134">trie_tree.cpp:134</a></div></div>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00133">133</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 133</span> {</div>
<div class="line"><span class="lineno"> 134</span> <span class="keywordflow">if</span> (index == str.length()) {</div>
<div class="line"><span class="lineno"> 135</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="#a4cb0f775b5a4bc14a6d39b5c93883eb6">isEndofWord</a>) {</div>
<div class="line"><span class="lineno"> 136</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 137</span> }</div>
<div class="line"><span class="lineno"> 138</span> <a class="code hl_variable" href="#a4cb0f775b5a4bc14a6d39b5c93883eb6">isEndofWord</a> = <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 139</span> <span class="comment">// following lines - possible source of error?</span></div>
<div class="line"><span class="lineno"> 140</span> <span class="comment">// for (int i = 0; i &lt; NUM_CHARS; i++)</span></div>
<div class="line"><span class="lineno"> 141</span> <span class="comment">// if (!arr[i])</span></div>
<div class="line"><span class="lineno"> 142</span> <span class="comment">// return false;</span></div>
<div class="line"><span class="lineno"> 143</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 144</span> }</div>
<div class="line"><span class="lineno"> 145</span> <span class="keywordtype">int</span> j = <a class="code hl_function" href="#aab373beb3f618b90922528c68797d988">char_to_int</a>(str[index]);</div>
<div class="line"><span class="lineno"> 146</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j]) {</div>
<div class="line"><span class="lineno"> 147</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 148</span> }</div>
<div class="line"><span class="lineno"> 149</span> <span class="keywordtype">bool</span> var = <a class="code hl_function" href="#aeac27cfd397d2dd3f2f519efffafeeab">deleteString</a>(str, index + 1);</div>
<div class="line"><span class="lineno"> 150</span> <span class="keywordflow">if</span> (var) {</div>
<div class="line"><span class="lineno"> 151</span> <a class="code hl_variable" href="#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j].reset();</div>
<div class="line"><span class="lineno"> 152</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="#a4cb0f775b5a4bc14a6d39b5c93883eb6">isEndofWord</a>) {</div>
<div class="line"><span class="lineno"> 153</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 154</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><span class="lineno"> 155</span> <span class="keywordtype">int</span> i = 0;</div>
<div class="line"><span class="lineno"> 156</span> <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code hl_variable" href="#a4bfac4be6ed1a34c7159eddb42469191">NUM_CHARS</a>; i++) {</div>
<div class="line"><span class="lineno"> 157</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[i]) {</div>
<div class="line"><span class="lineno"> 158</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 159</span> }</div>
<div class="line"><span class="lineno"> 160</span> }</div>
<div class="line"><span class="lineno"> 161</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 162</span> }</div>
<div class="line"><span class="lineno"> 163</span> }</div>
<div class="line"><span class="lineno"> 164</span> </div>
<div class="line"><span class="lineno"> 165</span> <span class="comment">/* should not return here */</span></div>
<div class="line"><span class="lineno"> 166</span> std::cout &lt;&lt; __func__ &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; __LINE__</div>
<div class="line"><span class="lineno"> 167</span> &lt;&lt; <span class="stringliteral">&quot;Should not reach this line\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 168</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 169</span> }</div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a362dd78748a1f01ab019e55fd6098a8b"><div class="ttname"><a href="#a362dd78748a1f01ab019e55fd6098a8b">data_structures::trie::arr</a></div><div class="ttdeci">std::array&lt; std::shared_ptr&lt; trie &gt;, NUM_CHARS&lt;&lt; 1 &gt; arr</div><div class="ttdoc">Recursive tree nodes as an array of shared-pointers.</div><div class="ttdef"><b>Definition</b> <a href="../../d7/d83/trie__tree_8cpp_source.html#l00028">trie_tree.cpp:28</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a4cb0f775b5a4bc14a6d39b5c93883eb6"><div class="ttname"><a href="#a4cb0f775b5a4bc14a6d39b5c93883eb6">data_structures::trie::isEndofWord</a></div><div class="ttdeci">bool isEndofWord</div><div class="ttdoc">identifier if a node is terminal node</div><div class="ttdef"><b>Definition</b> <a href="../../d7/d83/trie__tree_8cpp_source.html#l00029">trie_tree.cpp:29</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_aab373beb3f618b90922528c68797d988"><div class="ttname"><a href="#aab373beb3f618b90922528c68797d988">data_structures::trie::char_to_int</a></div><div class="ttdeci">uint8_t char_to_int(const char &amp;ch) const</div><div class="ttdoc">Convert a character to integer for indexing.</div><div class="ttdef"><b>Definition</b> <a href="../../d7/d83/trie__tree_8cpp_source.html#l00037">trie_tree.cpp:37</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_aeac27cfd397d2dd3f2f519efffafeeab"><div class="ttname"><a href="#aeac27cfd397d2dd3f2f519efffafeeab">data_structures::trie::deleteString</a></div><div class="ttdeci">bool deleteString(const std::string &amp;str, int index)</div><div class="ttdef"><b>Definition</b> <a href="../../d7/d83/trie__tree_8cpp_source.html#l00133">trie_tree.cpp:133</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -336,30 +336,30 @@ Static Private Attributes</h2></td></tr>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00077">77</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 77</span> {</div>
<div class="line"><span class="lineno"> 78</span> std::shared_ptr&lt;trie&gt; root(<span class="keyword">nullptr</span>);</div>
<div class="line"><span class="lineno"> 79</span> </div>
<div class="line"><span class="lineno"> 80</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span>&amp; ch : str) {</div>
<div class="line"><span class="lineno"> 81</span> <span class="keywordtype">int</span> j = <a class="code hl_function" href="#aab373beb3f618b90922528c68797d988">char_to_int</a>(ch);</div>
<div class="line"><span class="lineno"> 82</span> <span class="keywordflow">if</span> (root) {</div>
<div class="line"><span class="lineno"> 83</span> <span class="keywordflow">if</span> (root-&gt;arr[j]) {</div>
<div class="line"><span class="lineno"> 84</span> root = root-&gt;arr[j];</div>
<div class="line"><span class="lineno"> 85</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><span class="lineno"> 86</span> std::shared_ptr&lt;trie&gt; temp(<span class="keyword">new</span> <a class="code hl_function" href="#a87d8bf99aea936f9381141753f1e90a8">trie</a>());</div>
<div class="line"><span class="lineno"> 87</span> root-&gt;arr[j] = temp;</div>
<div class="line"><span class="lineno"> 88</span> root = temp;</div>
<div class="line"><span class="lineno"> 89</span> }</div>
<div class="line"><span class="lineno"> 90</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j]) {</div>
<div class="line"><span class="lineno"> 91</span> root = <a class="code hl_variable" href="#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j];</div>
<div class="line"><span class="lineno"> 92</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><span class="lineno"> 93</span> std::shared_ptr&lt;trie&gt; temp(<span class="keyword">new</span> <a class="code hl_function" href="#a87d8bf99aea936f9381141753f1e90a8">trie</a>());</div>
<div class="line"><span class="lineno"> 94</span> <a class="code hl_variable" href="#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j] = temp;</div>
<div class="line"><span class="lineno"> 95</span> root = temp;</div>
<div class="line"><span class="lineno"> 96</span> }</div>
<div class="line"><span class="lineno"> 97</span> }</div>
<div class="line"><span class="lineno"> 98</span> root-&gt;isEndofWord = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 99</span> }</div>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00076">76</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 76</span> {</div>
<div class="line"><span class="lineno"> 77</span> std::shared_ptr&lt;trie&gt; root(<span class="keyword">nullptr</span>);</div>
<div class="line"><span class="lineno"> 78</span> </div>
<div class="line"><span class="lineno"> 79</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span>&amp; ch : str) {</div>
<div class="line"><span class="lineno"> 80</span> <span class="keywordtype">int</span> j = <a class="code hl_function" href="#aab373beb3f618b90922528c68797d988">char_to_int</a>(ch);</div>
<div class="line"><span class="lineno"> 81</span> <span class="keywordflow">if</span> (root) {</div>
<div class="line"><span class="lineno"> 82</span> <span class="keywordflow">if</span> (root-&gt;arr[j]) {</div>
<div class="line"><span class="lineno"> 83</span> root = root-&gt;arr[j];</div>
<div class="line"><span class="lineno"> 84</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><span class="lineno"> 85</span> std::shared_ptr&lt;trie&gt; temp(<span class="keyword">new</span> <a class="code hl_function" href="#a87d8bf99aea936f9381141753f1e90a8">trie</a>());</div>
<div class="line"><span class="lineno"> 86</span> root-&gt;arr[j] = temp;</div>
<div class="line"><span class="lineno"> 87</span> root = temp;</div>
<div class="line"><span class="lineno"> 88</span> }</div>
<div class="line"><span class="lineno"> 89</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j]) {</div>
<div class="line"><span class="lineno"> 90</span> root = <a class="code hl_variable" href="#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j];</div>
<div class="line"><span class="lineno"> 91</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><span class="lineno"> 92</span> std::shared_ptr&lt;trie&gt; temp(<span class="keyword">new</span> <a class="code hl_function" href="#a87d8bf99aea936f9381141753f1e90a8">trie</a>());</div>
<div class="line"><span class="lineno"> 93</span> <a class="code hl_variable" href="#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j] = temp;</div>
<div class="line"><span class="lineno"> 94</span> root = temp;</div>
<div class="line"><span class="lineno"> 95</span> }</div>
<div class="line"><span class="lineno"> 96</span> }</div>
<div class="line"><span class="lineno"> 97</span> root-&gt;isEndofWord = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 98</span> }</div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a87d8bf99aea936f9381141753f1e90a8"><div class="ttname"><a href="#a87d8bf99aea936f9381141753f1e90a8">data_structures::trie::trie</a></div><div class="ttdeci">trie()=default</div><div class="ttdoc">Class default constructor.</div></div>
</div><!-- fragment -->
</div>
@@ -406,21 +406,21 @@ Static Private Attributes</h2></td></tr>
<dd>
<code>false</code> if not found </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00056">56</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 57</span> {</div>
<div class="line"><span class="lineno"> 58</span> <span class="keywordflow">if</span> (index == str.length()) {</div>
<div class="line"><span class="lineno"> 59</span> <span class="keywordflow">if</span> (!root-&gt;isEndofWord) {</div>
<div class="line"><span class="lineno"> 60</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 61</span> }</div>
<div class="line"><span class="lineno"> 62</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 63</span> }</div>
<div class="line"><span class="lineno"> 64</span> <span class="keywordtype">int</span> j = <a class="code hl_function" href="#aab373beb3f618b90922528c68797d988">char_to_int</a>(str[index]);</div>
<div class="line"><span class="lineno"> 65</span> <span class="keywordflow">if</span> (!root-&gt;arr[j]) {</div>
<div class="line"><span class="lineno"> 66</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 67</span> }</div>
<div class="line"><span class="lineno"> 68</span> <span class="keywordflow">return</span> <a class="code hl_function" href="#a961eb5d576d2420f2036009154397c63">search</a>(root-&gt;arr[j], str, index + 1);</div>
<div class="line"><span class="lineno"> 69</span> }</div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a961eb5d576d2420f2036009154397c63"><div class="ttname"><a href="#a961eb5d576d2420f2036009154397c63">data_structures::trie::search</a></div><div class="ttdeci">bool search(const std::shared_ptr&lt; trie &gt; &amp;root, const std::string &amp;str, int index)</div><div class="ttdef"><b>Definition</b> <a href="../../d7/d83/trie__tree_8cpp_source.html#l00056">trie_tree.cpp:56</a></div></div>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00055">55</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 56</span> {</div>
<div class="line"><span class="lineno"> 57</span> <span class="keywordflow">if</span> (index == str.length()) {</div>
<div class="line"><span class="lineno"> 58</span> <span class="keywordflow">if</span> (!root-&gt;isEndofWord) {</div>
<div class="line"><span class="lineno"> 59</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 60</span> }</div>
<div class="line"><span class="lineno"> 61</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 62</span> }</div>
<div class="line"><span class="lineno"> 63</span> <span class="keywordtype">int</span> j = <a class="code hl_function" href="#aab373beb3f618b90922528c68797d988">char_to_int</a>(str[index]);</div>
<div class="line"><span class="lineno"> 64</span> <span class="keywordflow">if</span> (!root-&gt;arr[j]) {</div>
<div class="line"><span class="lineno"> 65</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 66</span> }</div>
<div class="line"><span class="lineno"> 67</span> <span class="keywordflow">return</span> <a class="code hl_function" href="#a961eb5d576d2420f2036009154397c63">search</a>(root-&gt;arr[j], str, index + 1);</div>
<div class="line"><span class="lineno"> 68</span> }</div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a961eb5d576d2420f2036009154397c63"><div class="ttname"><a href="#a961eb5d576d2420f2036009154397c63">data_structures::trie::search</a></div><div class="ttdeci">bool search(const std::shared_ptr&lt; trie &gt; &amp;root, const std::string &amp;str, int index)</div><div class="ttdef"><b>Definition</b> <a href="../../d7/d83/trie__tree_8cpp_source.html#l00055">trie_tree.cpp:55</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -461,20 +461,20 @@ Static Private Attributes</h2></td></tr>
<dd>
<code>false</code> if not found </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00107">107</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 107</span> {</div>
<div class="line"><span class="lineno"> 108</span> <span class="keywordflow">if</span> (index == str.length()) {</div>
<div class="line"><span class="lineno"> 109</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="#a4cb0f775b5a4bc14a6d39b5c93883eb6">isEndofWord</a>) {</div>
<div class="line"><span class="lineno"> 110</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 111</span> }</div>
<div class="line"><span class="lineno"> 112</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 113</span> }</div>
<div class="line"><span class="lineno"> 114</span> <span class="keywordtype">int</span> j = <a class="code hl_function" href="#aab373beb3f618b90922528c68797d988">char_to_int</a>(str[index]);</div>
<div class="line"><span class="lineno"> 115</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j]) {</div>
<div class="line"><span class="lineno"> 116</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 117</span> }</div>
<div class="line"><span class="lineno"> 118</span> <span class="keywordflow">return</span> <a class="code hl_function" href="#a961eb5d576d2420f2036009154397c63">search</a>(<a class="code hl_variable" href="#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j], str, index + 1);</div>
<div class="line"><span class="lineno"> 119</span> }</div>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00106">106</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 106</span> {</div>
<div class="line"><span class="lineno"> 107</span> <span class="keywordflow">if</span> (index == str.length()) {</div>
<div class="line"><span class="lineno"> 108</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="#a4cb0f775b5a4bc14a6d39b5c93883eb6">isEndofWord</a>) {</div>
<div class="line"><span class="lineno"> 109</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 110</span> }</div>
<div class="line"><span class="lineno"> 111</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 112</span> }</div>
<div class="line"><span class="lineno"> 113</span> <span class="keywordtype">int</span> j = <a class="code hl_function" href="#aab373beb3f618b90922528c68797d988">char_to_int</a>(str[index]);</div>
<div class="line"><span class="lineno"> 114</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j]) {</div>
<div class="line"><span class="lineno"> 115</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 116</span> }</div>
<div class="line"><span class="lineno"> 117</span> <span class="keywordflow">return</span> <a class="code hl_function" href="#a961eb5d576d2420f2036009154397c63">search</a>(<a class="code hl_variable" href="#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j], str, index + 1);</div>
<div class="line"><span class="lineno"> 118</span> }</div>
</div><!-- fragment -->
</div>
</div>
@@ -501,7 +501,7 @@ Static Private Attributes</h2></td></tr>
<p>Recursive tree nodes as an array of shared-pointers. </p>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00029">29</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00028">28</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
</div>
</div>
@@ -527,7 +527,7 @@ Static Private Attributes</h2></td></tr>
<p>identifier if a node is terminal node </p>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00030">30</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00029">29</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
</div>
</div>
@@ -553,7 +553,7 @@ Static Private Attributes</h2></td></tr>
<p>Number of alphabets. </p>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00027">27</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00026">26</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
</div>
</div>

View File

@@ -516,7 +516,7 @@ $(function(){initNavTree('d0/dea/strassen__matrix__multiplication_8cpp_source.ht
<div class="ttc" id="agenerate__parentheses_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../dd/d1e/generate__parentheses_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Self-test implementations.</div><div class="ttdef"><b>Definition</b> <a href="../../dd/d1e/generate__parentheses_8cpp_source.html#l00082">generate_parentheses.cpp:82</a></div></div>
<div class="ttc" id="agenerate__parentheses_8cpp_html_gae66f6b31b5ad750f1fe042a706a4e3d4"><div class="ttname"><a href="../../dd/d1e/generate__parentheses_8cpp.html#gae66f6b31b5ad750f1fe042a706a4e3d4">main</a></div><div class="ttdeci">int main()</div><div class="ttdoc">Main function.</div><div class="ttdef"><b>Definition</b> <a href="../../dd/d1e/generate__parentheses_8cpp_source.html#l00110">generate_parentheses.cpp:110</a></div></div>
<div class="ttc" id="ahill__cipher_8cpp_html_a34bfcd756610834acac501f9eea1e2eb"><div class="ttname"><a href="../../d7/db9/hill__cipher_8cpp.html#a34bfcd756610834acac501f9eea1e2eb">operator&lt;&lt;</a></div><div class="ttdeci">static std::ostream &amp; operator&lt;&lt;(std::ostream &amp;out, matrix&lt; T &gt; const &amp;v)</div><div class="ttdef"><b>Definition</b> <a href="../../d7/db9/hill__cipher_8cpp_source.html#l00055">hill_cipher.cpp:55</a></div></div>
<div class="ttc" id="anamespacedivide__and__conquer_html"><div class="ttname"><a href="../../dd/dba/namespacedivide__and__conquer.html">divide_and_conquer</a></div><div class="ttdoc">for std::vector</div></div>
<div class="ttc" id="anamespacedivide__and__conquer_html"><div class="ttname"><a href="../../dd/dba/namespacedivide__and__conquer.html">divide_and_conquer</a></div><div class="ttdoc">for IO operations</div></div>
<div class="ttc" id="anamespacestrassens__multiplication_html"><div class="ttname"><a href="../../d3/d91/namespacestrassens__multiplication.html">strassens_multiplication</a></div><div class="ttdoc">Namespace for performing strassen&#39;s multiplication.</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->

View File

@@ -132,11 +132,10 @@ $(function(){initNavTree('d3/d40/graph__coloring_8cpp.html','../../'); initResiz
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;array&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for graph_coloring.cpp:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d7/dce/graph__coloring_8cpp__incl.svg" width="238" height="126"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d7/dce/graph__coloring_8cpp__incl.svg" width="158" height="126"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
<p><a href="../../d3/d40/graph__coloring_8cpp_source.html">Go to the source code of this file.</a></p>
@@ -225,30 +224,30 @@ template&lt;size_t V&gt; </div>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="../../d3/d40/graph__coloring_8cpp_source.html#l00082">82</a> of file <a class="el" href="../../d3/d40/graph__coloring_8cpp_source.html">graph_coloring.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 83</span> {</div>
<div class="line"><span class="lineno"> 84</span> <span class="comment">// base case:</span></div>
<div class="line"><span class="lineno"> 85</span> <span class="comment">// If all vertices are assigned a color then return true</span></div>
<div class="line"><span class="lineno"> 86</span> <span class="keywordflow">if</span> (v == V) {</div>
<div class="line"><span class="lineno"> 87</span> <a class="code hl_function" href="#a8c47fa37fb6eeeb781b2ec1b05af6b07">printSolution&lt;V&gt;</a>(color);</div>
<div class="line"><span class="lineno"> 88</span> <span class="keywordflow">return</span>;</div>
<div class="line"><span class="lineno"> 89</span> }</div>
<div class="line"><span class="lineno"> 90</span> </div>
<div class="line"><span class="lineno"> 91</span> <span class="comment">// Consider this vertex v and try different colors</span></div>
<div class="line"><span class="lineno"> 92</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> c = 1; c &lt;= m; c++) {</div>
<div class="line"><span class="lineno"> 93</span> <span class="comment">// Check if assignment of color c to v is fine</span></div>
<div class="line"><span class="lineno"> 94</span> <span class="keywordflow">if</span> (isSafe&lt;V&gt;(v, <a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>, color, c)) {</div>
<div class="line"><span class="lineno"> 95</span> color[v] = c;</div>
<div class="line"><span class="lineno"> 96</span> </div>
<div class="line"><span class="lineno"> 97</span> <span class="comment">// recur to assign colors to rest of the vertices</span></div>
<div class="line"><span class="lineno"> 98</span> graphColoring&lt;V&gt;(<a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>, m, color, v + 1);</div>
<div class="line"><span class="lineno"> 99</span> </div>
<div class="line"><span class="lineno"> 100</span> <span class="comment">// If assigning color c doesn&#39;t lead to a solution then remove it</span></div>
<div class="line"><span class="lineno"> 101</span> color[v] = 0;</div>
<div class="line"><span class="lineno"> 102</span> }</div>
<div class="line"><span class="lineno"> 103</span> }</div>
<div class="line"><span class="lineno"> 104</span>}</div>
<div class="ttc" id="agraph__coloring_8cpp_html_a8c47fa37fb6eeeb781b2ec1b05af6b07"><div class="ttname"><a href="#a8c47fa37fb6eeeb781b2ec1b05af6b07">backtracking::graph_coloring::printSolution</a></div><div class="ttdeci">void printSolution(const std::array&lt; int, V &gt; &amp;color)</div><div class="ttdoc">A utility function to print the solution.</div><div class="ttdef"><b>Definition</b> <a href="../../d3/d40/graph__coloring_8cpp_source.html#l00042">graph_coloring.cpp:42</a></div></div>
<p class="definition">Definition at line <a class="el" href="../../d3/d40/graph__coloring_8cpp_source.html#l00081">81</a> of file <a class="el" href="../../d3/d40/graph__coloring_8cpp_source.html">graph_coloring.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 82</span> {</div>
<div class="line"><span class="lineno"> 83</span> <span class="comment">// base case:</span></div>
<div class="line"><span class="lineno"> 84</span> <span class="comment">// If all vertices are assigned a color then return true</span></div>
<div class="line"><span class="lineno"> 85</span> <span class="keywordflow">if</span> (v == V) {</div>
<div class="line"><span class="lineno"> 86</span> <a class="code hl_function" href="#a8c47fa37fb6eeeb781b2ec1b05af6b07">printSolution&lt;V&gt;</a>(color);</div>
<div class="line"><span class="lineno"> 87</span> <span class="keywordflow">return</span>;</div>
<div class="line"><span class="lineno"> 88</span> }</div>
<div class="line"><span class="lineno"> 89</span> </div>
<div class="line"><span class="lineno"> 90</span> <span class="comment">// Consider this vertex v and try different colors</span></div>
<div class="line"><span class="lineno"> 91</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> c = 1; c &lt;= m; c++) {</div>
<div class="line"><span class="lineno"> 92</span> <span class="comment">// Check if assignment of color c to v is fine</span></div>
<div class="line"><span class="lineno"> 93</span> <span class="keywordflow">if</span> (isSafe&lt;V&gt;(v, <a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>, color, c)) {</div>
<div class="line"><span class="lineno"> 94</span> color[v] = c;</div>
<div class="line"><span class="lineno"> 95</span> </div>
<div class="line"><span class="lineno"> 96</span> <span class="comment">// recur to assign colors to rest of the vertices</span></div>
<div class="line"><span class="lineno"> 97</span> graphColoring&lt;V&gt;(<a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>, m, color, v + 1);</div>
<div class="line"><span class="lineno"> 98</span> </div>
<div class="line"><span class="lineno"> 99</span> <span class="comment">// If assigning color c doesn&#39;t lead to a solution then remove it</span></div>
<div class="line"><span class="lineno"> 100</span> color[v] = 0;</div>
<div class="line"><span class="lineno"> 101</span> }</div>
<div class="line"><span class="lineno"> 102</span> }</div>
<div class="line"><span class="lineno"> 103</span>}</div>
<div class="ttc" id="agraph__coloring_8cpp_html_a8c47fa37fb6eeeb781b2ec1b05af6b07"><div class="ttname"><a href="#a8c47fa37fb6eeeb781b2ec1b05af6b07">backtracking::graph_coloring::printSolution</a></div><div class="ttdeci">void printSolution(const std::array&lt; int, V &gt; &amp;color)</div><div class="ttdoc">A utility function to print the solution.</div><div class="ttdef"><b>Definition</b> <a href="../../d3/d40/graph__coloring_8cpp_source.html#l00041">graph_coloring.cpp:41</a></div></div>
<div class="ttc" id="anamespacegraph_html"><div class="ttname"><a href="../../df/dce/namespacegraph.html">graph</a></div><div class="ttdoc">Graph Algorithms.</div></div>
</div><!-- fragment -->
</div>
@@ -304,15 +303,15 @@ template&lt;size_t V&gt; </div>
<dd>
<code>false</code> if the color is not safe to be assigned to the node </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../d3/d40/graph__coloring_8cpp_source.html#l00062">62</a> of file <a class="el" href="../../d3/d40/graph__coloring_8cpp_source.html">graph_coloring.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 63</span> {</div>
<div class="line"><span class="lineno"> 64</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; V; i++) {</div>
<div class="line"><span class="lineno"> 65</span> <span class="keywordflow">if</span> (<a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>[v][i] &amp;&amp; c == color[i]) {</div>
<div class="line"><span class="lineno"> 66</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 67</span> }</div>
<div class="line"><span class="lineno"> 68</span> }</div>
<div class="line"><span class="lineno"> 69</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 70</span>}</div>
<p class="definition">Definition at line <a class="el" href="../../d3/d40/graph__coloring_8cpp_source.html#l00061">61</a> of file <a class="el" href="../../d3/d40/graph__coloring_8cpp_source.html">graph_coloring.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 62</span> {</div>
<div class="line"><span class="lineno"> 63</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; V; i++) {</div>
<div class="line"><span class="lineno"> 64</span> <span class="keywordflow">if</span> (<a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>[v][i] &amp;&amp; c == color[i]) {</div>
<div class="line"><span class="lineno"> 65</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 66</span> }</div>
<div class="line"><span class="lineno"> 67</span> }</div>
<div class="line"><span class="lineno"> 68</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 69</span>}</div>
</div><!-- fragment -->
</div>
</div>
@@ -334,27 +333,27 @@ template&lt;size_t V&gt; </div>
<p>Main function. </p>
<dl class="section return"><dt>Returns</dt><dd>0 on exit </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../d3/d40/graph__coloring_8cpp_source.html#l00112">112</a> of file <a class="el" href="../../d3/d40/graph__coloring_8cpp_source.html">graph_coloring.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 112</span> {</div>
<div class="line"><span class="lineno"> 113</span> <span class="comment">// Create following graph and test whether it is 3 colorable</span></div>
<div class="line"><span class="lineno"> 114</span> <span class="comment">// (3)---(2)</span></div>
<div class="line"><span class="lineno"> 115</span> <span class="comment">// | / |</span></div>
<div class="line"><span class="lineno"> 116</span> <span class="comment">// | / |</span></div>
<div class="line"><span class="lineno"> 117</span> <span class="comment">// | / |</span></div>
<div class="line"><span class="lineno"> 118</span> <span class="comment">// (0)---(1)</span></div>
<div class="line"><span class="lineno"> 119</span> </div>
<div class="line"><span class="lineno"> 120</span> <span class="keyword">const</span> <span class="keywordtype">int</span> V = 4; <span class="comment">// number of vertices in the graph</span></div>
<div class="line"><span class="lineno"> 121</span> std::array&lt;std::array&lt;int, V&gt;, V&gt; <a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a> = {</div>
<div class="line"><span class="lineno"> 122</span> std::array&lt;int, V&gt;({0, 1, 1, 1}), std::array&lt;int, V&gt;({1, 0, 1, 0}),</div>
<div class="line"><span class="lineno"> 123</span> std::array&lt;int, V&gt;({1, 1, 0, 1}), std::array&lt;int, V&gt;({1, 0, 1, 0})};</div>
<div class="line"><span class="lineno"> 124</span> </div>
<div class="line"><span class="lineno"> 125</span> <span class="keywordtype">int</span> m = 3; <span class="comment">// Number of colors</span></div>
<div class="line"><span class="lineno"> 126</span> std::array&lt;int, V&gt; color{};</div>
<div class="line"><span class="lineno"> 127</span> </div>
<div class="line"><span class="lineno"> 128</span> <a class="code hl_function" href="#a40337efc5dad761096489bf2c5b1c80c">backtracking::graph_coloring::graphColoring&lt;V&gt;</a>(<a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>, m, color, 0);</div>
<div class="line"><span class="lineno"> 129</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><span class="lineno"> 130</span>}</div>
<div class="ttc" id="agraph__coloring_8cpp_html_a40337efc5dad761096489bf2c5b1c80c"><div class="ttname"><a href="#a40337efc5dad761096489bf2c5b1c80c">backtracking::graph_coloring::graphColoring</a></div><div class="ttdeci">void graphColoring(const std::array&lt; std::array&lt; int, V &gt;, V &gt; &amp;graph, int m, std::array&lt; int, V &gt; color, int v)</div><div class="ttdoc">Recursive utility function to solve m coloring problem.</div><div class="ttdef"><b>Definition</b> <a href="../../d3/d40/graph__coloring_8cpp_source.html#l00082">graph_coloring.cpp:82</a></div></div>
<p class="definition">Definition at line <a class="el" href="../../d3/d40/graph__coloring_8cpp_source.html#l00111">111</a> of file <a class="el" href="../../d3/d40/graph__coloring_8cpp_source.html">graph_coloring.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 111</span> {</div>
<div class="line"><span class="lineno"> 112</span> <span class="comment">// Create following graph and test whether it is 3 colorable</span></div>
<div class="line"><span class="lineno"> 113</span> <span class="comment">// (3)---(2)</span></div>
<div class="line"><span class="lineno"> 114</span> <span class="comment">// | / |</span></div>
<div class="line"><span class="lineno"> 115</span> <span class="comment">// | / |</span></div>
<div class="line"><span class="lineno"> 116</span> <span class="comment">// | / |</span></div>
<div class="line"><span class="lineno"> 117</span> <span class="comment">// (0)---(1)</span></div>
<div class="line"><span class="lineno"> 118</span> </div>
<div class="line"><span class="lineno"> 119</span> <span class="keyword">const</span> <span class="keywordtype">int</span> V = 4; <span class="comment">// number of vertices in the graph</span></div>
<div class="line"><span class="lineno"> 120</span> std::array&lt;std::array&lt;int, V&gt;, V&gt; <a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a> = {</div>
<div class="line"><span class="lineno"> 121</span> std::array&lt;int, V&gt;({0, 1, 1, 1}), std::array&lt;int, V&gt;({1, 0, 1, 0}),</div>
<div class="line"><span class="lineno"> 122</span> std::array&lt;int, V&gt;({1, 1, 0, 1}), std::array&lt;int, V&gt;({1, 0, 1, 0})};</div>
<div class="line"><span class="lineno"> 123</span> </div>
<div class="line"><span class="lineno"> 124</span> <span class="keywordtype">int</span> m = 3; <span class="comment">// Number of colors</span></div>
<div class="line"><span class="lineno"> 125</span> std::array&lt;int, V&gt; color{};</div>
<div class="line"><span class="lineno"> 126</span> </div>
<div class="line"><span class="lineno"> 127</span> <a class="code hl_function" href="#a40337efc5dad761096489bf2c5b1c80c">backtracking::graph_coloring::graphColoring&lt;V&gt;</a>(<a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>, m, color, 0);</div>
<div class="line"><span class="lineno"> 128</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><span class="lineno"> 129</span>}</div>
<div class="ttc" id="agraph__coloring_8cpp_html_a40337efc5dad761096489bf2c5b1c80c"><div class="ttname"><a href="#a40337efc5dad761096489bf2c5b1c80c">backtracking::graph_coloring::graphColoring</a></div><div class="ttdeci">void graphColoring(const std::array&lt; std::array&lt; int, V &gt;, V &gt; &amp;graph, int m, std::array&lt; int, V &gt; color, int v)</div><div class="ttdoc">Recursive utility function to solve m coloring problem.</div><div class="ttdef"><b>Definition</b> <a href="../../d3/d40/graph__coloring_8cpp_source.html#l00081">graph_coloring.cpp:81</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -389,14 +388,14 @@ template&lt;size_t V&gt; </div>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="../../d3/d40/graph__coloring_8cpp_source.html#l00042">42</a> of file <a class="el" href="../../d3/d40/graph__coloring_8cpp_source.html">graph_coloring.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 42</span> {</div>
<div class="line"><span class="lineno"> 43</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Following are the assigned colors\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 44</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; col : color) {</div>
<div class="line"><span class="lineno"> 45</span> std::cout &lt;&lt; col;</div>
<div class="line"><span class="lineno"> 46</span> }</div>
<div class="line"><span class="lineno"> 47</span> std::cout &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 48</span>}</div>
<p class="definition">Definition at line <a class="el" href="../../d3/d40/graph__coloring_8cpp_source.html#l00041">41</a> of file <a class="el" href="../../d3/d40/graph__coloring_8cpp_source.html">graph_coloring.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 41</span> {</div>
<div class="line"><span class="lineno"> 42</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Following are the assigned colors\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 43</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; col : color) {</div>
<div class="line"><span class="lineno"> 44</span> std::cout &lt;&lt; col;</div>
<div class="line"><span class="lineno"> 45</span> }</div>
<div class="line"><span class="lineno"> 46</span> std::cout &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 47</span>}</div>
</div><!-- fragment -->
</div>
</div>

View File

@@ -128,88 +128,87 @@ $(function(){initNavTree('d3/d40/graph__coloring_8cpp_source.html','../../'); in
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#include &lt;array&gt;</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="preprocessor">#include &lt;iostream&gt;</span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="preprocessor">#include &lt;vector&gt;</span> </div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../db/dc0/namespacebacktracking.html">backtracking</a> {</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d7/d08/namespacegraph__coloring.html">graph_coloring</a> {</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="keyword">template</span> &lt;<span class="keywordtype">size_t</span> V&gt;</div>
<div class="foldopen" id="foldopen00042" data-start="{" data-end="}">
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="../../d3/d40/graph__coloring_8cpp.html#a8c47fa37fb6eeeb781b2ec1b05af6b07"> 42</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d3/d40/graph__coloring_8cpp.html#a8c47fa37fb6eeeb781b2ec1b05af6b07">printSolution</a>(<span class="keyword">const</span> std::array&lt;int, V&gt;&amp; color) {</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Following are the assigned colors\n&quot;</span>;</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; col : color) {</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> std::cout &lt;&lt; col;</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> }</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> std::cout &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span>}</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../db/dc0/namespacebacktracking.html">backtracking</a> {</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d7/d08/namespacegraph__coloring.html">graph_coloring</a> {</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="keyword">template</span> &lt;<span class="keywordtype">size_t</span> V&gt;</div>
<div class="foldopen" id="foldopen00041" data-start="{" data-end="}">
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"><a class="line" href="../../d3/d40/graph__coloring_8cpp.html#a8c47fa37fb6eeeb781b2ec1b05af6b07"> 41</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d3/d40/graph__coloring_8cpp.html#a8c47fa37fb6eeeb781b2ec1b05af6b07">printSolution</a>(<span class="keyword">const</span> std::array&lt;int, V&gt;&amp; color) {</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Following are the assigned colors\n&quot;</span>;</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; col : color) {</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> std::cout &lt;&lt; col;</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> }</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> std::cout &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span>}</div>
</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="keyword">template</span> &lt;<span class="keywordtype">size_t</span> V&gt;</div>
<div class="foldopen" id="foldopen00062" data-start="{" data-end="}">
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="../../d3/d40/graph__coloring_8cpp.html#a976efe049deb042bf1f02612e181ab1d"> 62</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="../../d3/d40/graph__coloring_8cpp.html#a976efe049deb042bf1f02612e181ab1d">isSafe</a>(<span class="keywordtype">int</span> v, <span class="keyword">const</span> std::array&lt;std::array&lt;int, V&gt;, V&gt;&amp; <a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>,</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="keyword">const</span> std::array&lt;int, V&gt;&amp; color, <span class="keywordtype">int</span> c) {</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; V; i++) {</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">if</span> (<a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>[v][i] &amp;&amp; c == color[i]) {</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> }</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> }</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span>}</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="keyword">template</span> &lt;<span class="keywordtype">size_t</span> V&gt;</div>
<div class="foldopen" id="foldopen00061" data-start="{" data-end="}">
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="../../d3/d40/graph__coloring_8cpp.html#a976efe049deb042bf1f02612e181ab1d"> 61</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="../../d3/d40/graph__coloring_8cpp.html#a976efe049deb042bf1f02612e181ab1d">isSafe</a>(<span class="keywordtype">int</span> v, <span class="keyword">const</span> std::array&lt;std::array&lt;int, V&gt;, V&gt;&amp; <a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>,</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">const</span> std::array&lt;int, V&gt;&amp; color, <span class="keywordtype">int</span> c) {</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; V; i++) {</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordflow">if</span> (<a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>[v][i] &amp;&amp; c == color[i]) {</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> }</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> }</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span>}</div>
</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="keyword">template</span> &lt;<span class="keywordtype">size_t</span> V&gt;</div>
<div class="foldopen" id="foldopen00082" data-start="{" data-end="}">
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"><a class="line" href="../../d3/d40/graph__coloring_8cpp.html#a40337efc5dad761096489bf2c5b1c80c"> 82</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d3/d40/graph__coloring_8cpp.html#a40337efc5dad761096489bf2c5b1c80c">graphColoring</a>(<span class="keyword">const</span> std::array&lt;std::array&lt;int, V&gt;, V&gt;&amp; <a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>, <span class="keywordtype">int</span> m,</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> std::array&lt;int, V&gt; color, <span class="keywordtype">int</span> v) {</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="comment">// base case:</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="comment">// If all vertices are assigned a color then return true</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordflow">if</span> (v == V) {</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <a class="code hl_function" href="../../d3/d40/graph__coloring_8cpp.html#a8c47fa37fb6eeeb781b2ec1b05af6b07">printSolution&lt;V&gt;</a>(color);</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> }</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="comment">// Consider this vertex v and try different colors</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> c = 1; c &lt;= m; c++) {</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="comment">// Check if assignment of color c to v is fine</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="../../d3/d40/graph__coloring_8cpp.html#a976efe049deb042bf1f02612e181ab1d">isSafe&lt;V&gt;</a>(v, <a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>, color, c)) {</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> color[v] = c;</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> </div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// recur to assign colors to rest of the vertices</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <a class="code hl_function" href="../../d3/d40/graph__coloring_8cpp.html#a40337efc5dad761096489bf2c5b1c80c">graphColoring&lt;V&gt;</a>(<a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>, m, color, v + 1);</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="comment">// If assigning color c doesn&#39;t lead to a solution then remove it</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> color[v] = 0;</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> }</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> }</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span>}</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="keyword">template</span> &lt;<span class="keywordtype">size_t</span> V&gt;</div>
<div class="foldopen" id="foldopen00081" data-start="{" data-end="}">
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"><a class="line" href="../../d3/d40/graph__coloring_8cpp.html#a40337efc5dad761096489bf2c5b1c80c"> 81</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d3/d40/graph__coloring_8cpp.html#a40337efc5dad761096489bf2c5b1c80c">graphColoring</a>(<span class="keyword">const</span> std::array&lt;std::array&lt;int, V&gt;, V&gt;&amp; <a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>, <span class="keywordtype">int</span> m,</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> std::array&lt;int, V&gt; color, <span class="keywordtype">int</span> v) {</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="comment">// base case:</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="comment">// If all vertices are assigned a color then return true</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="keywordflow">if</span> (v == V) {</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <a class="code hl_function" href="../../d3/d40/graph__coloring_8cpp.html#a8c47fa37fb6eeeb781b2ec1b05af6b07">printSolution&lt;V&gt;</a>(color);</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> }</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> </div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// Consider this vertex v and try different colors</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> c = 1; c &lt;= m; c++) {</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// Check if assignment of color c to v is fine</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="../../d3/d40/graph__coloring_8cpp.html#a976efe049deb042bf1f02612e181ab1d">isSafe&lt;V&gt;</a>(v, <a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>, color, c)) {</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> color[v] = c;</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="comment">// recur to assign colors to rest of the vertices</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <a class="code hl_function" href="../../d3/d40/graph__coloring_8cpp.html#a40337efc5dad761096489bf2c5b1c80c">graphColoring&lt;V&gt;</a>(<a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>, m, color, v + 1);</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> </div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="comment">// If assigning color c doesn&#39;t lead to a solution then remove it</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> color[v] = 0;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> }</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> }</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span>}</div>
</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span>} <span class="comment">// namespace graph_coloring</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span>} <span class="comment">// namespace backtracking</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span></div>
<div class="foldopen" id="foldopen00112" data-start="{" data-end="}">
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"><a class="line" href="../../d3/d40/graph__coloring_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4"> 112</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d3/d40/graph__coloring_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a>() {</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="comment">// Create following graph and test whether it is 3 colorable</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="comment">// (3)---(2)</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="comment">// | / |</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="comment">// | / |</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="comment">// | / |</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="comment">// (0)---(1)</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keyword">const</span> <span class="keywordtype">int</span> V = 4; <span class="comment">// number of vertices in the graph</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> std::array&lt;std::array&lt;int, V&gt;, V&gt; <a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a> = {</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> std::array&lt;int, V&gt;({0, 1, 1, 1}), std::array&lt;int, V&gt;({1, 0, 1, 0}),</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> std::array&lt;int, V&gt;({1, 1, 0, 1}), std::array&lt;int, V&gt;({1, 0, 1, 0})};</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> </div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keywordtype">int</span> m = 3; <span class="comment">// Number of colors</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> std::array&lt;int, V&gt; color{};</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> </div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <a class="code hl_function" href="../../d3/d40/graph__coloring_8cpp.html#a40337efc5dad761096489bf2c5b1c80c">backtracking::graph_coloring::graphColoring&lt;V&gt;</a>(<a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>, m, color, 0);</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span>}</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span>} <span class="comment">// namespace graph_coloring</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span>} <span class="comment">// namespace backtracking</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span></div>
<div class="foldopen" id="foldopen00111" data-start="{" data-end="}">
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"><a class="line" href="../../d3/d40/graph__coloring_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4"> 111</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d3/d40/graph__coloring_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a>() {</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="comment">// Create following graph and test whether it is 3 colorable</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="comment">// (3)---(2)</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="comment">// | / |</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="comment">// | / |</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="comment">// | / |</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="comment">// (0)---(1)</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> </div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="keyword">const</span> <span class="keywordtype">int</span> V = 4; <span class="comment">// number of vertices in the graph</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> std::array&lt;std::array&lt;int, V&gt;, V&gt; <a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a> = {</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> std::array&lt;int, V&gt;({0, 1, 1, 1}), std::array&lt;int, V&gt;({1, 0, 1, 0}),</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> std::array&lt;int, V&gt;({1, 1, 0, 1}), std::array&lt;int, V&gt;({1, 0, 1, 0})};</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keywordtype">int</span> m = 3; <span class="comment">// Number of colors</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> std::array&lt;int, V&gt; color{};</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> </div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <a class="code hl_function" href="../../d3/d40/graph__coloring_8cpp.html#a40337efc5dad761096489bf2c5b1c80c">backtracking::graph_coloring::graphColoring&lt;V&gt;</a>(<a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a>, m, color, 0);</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span>}</div>
</div>
<div class="ttc" id="agraph__coloring_8cpp_html_a40337efc5dad761096489bf2c5b1c80c"><div class="ttname"><a href="../../d3/d40/graph__coloring_8cpp.html#a40337efc5dad761096489bf2c5b1c80c">backtracking::graph_coloring::graphColoring</a></div><div class="ttdeci">void graphColoring(const std::array&lt; std::array&lt; int, V &gt;, V &gt; &amp;graph, int m, std::array&lt; int, V &gt; color, int v)</div><div class="ttdoc">Recursive utility function to solve m coloring problem.</div><div class="ttdef"><b>Definition</b> <a href="#l00082">graph_coloring.cpp:82</a></div></div>
<div class="ttc" id="agraph__coloring_8cpp_html_a8c47fa37fb6eeeb781b2ec1b05af6b07"><div class="ttname"><a href="../../d3/d40/graph__coloring_8cpp.html#a8c47fa37fb6eeeb781b2ec1b05af6b07">backtracking::graph_coloring::printSolution</a></div><div class="ttdeci">void printSolution(const std::array&lt; int, V &gt; &amp;color)</div><div class="ttdoc">A utility function to print the solution.</div><div class="ttdef"><b>Definition</b> <a href="#l00042">graph_coloring.cpp:42</a></div></div>
<div class="ttc" id="agraph__coloring_8cpp_html_a976efe049deb042bf1f02612e181ab1d"><div class="ttname"><a href="../../d3/d40/graph__coloring_8cpp.html#a976efe049deb042bf1f02612e181ab1d">backtracking::graph_coloring::isSafe</a></div><div class="ttdeci">bool isSafe(int v, const std::array&lt; std::array&lt; int, V &gt;, V &gt; &amp;graph, const std::array&lt; int, V &gt; &amp;color, int c)</div><div class="ttdoc">Utility function to check if the current color assignment is safe for vertex v.</div><div class="ttdef"><b>Definition</b> <a href="#l00062">graph_coloring.cpp:62</a></div></div>
<div class="ttc" id="agraph__coloring_8cpp_html_ae66f6b31b5ad750f1fe042a706a4e3d4"><div class="ttname"><a href="../../d3/d40/graph__coloring_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a></div><div class="ttdeci">int main()</div><div class="ttdoc">Main function.</div><div class="ttdef"><b>Definition</b> <a href="#l00112">graph_coloring.cpp:112</a></div></div>
<div class="ttc" id="agraph__coloring_8cpp_html_a40337efc5dad761096489bf2c5b1c80c"><div class="ttname"><a href="../../d3/d40/graph__coloring_8cpp.html#a40337efc5dad761096489bf2c5b1c80c">backtracking::graph_coloring::graphColoring</a></div><div class="ttdeci">void graphColoring(const std::array&lt; std::array&lt; int, V &gt;, V &gt; &amp;graph, int m, std::array&lt; int, V &gt; color, int v)</div><div class="ttdoc">Recursive utility function to solve m coloring problem.</div><div class="ttdef"><b>Definition</b> <a href="#l00081">graph_coloring.cpp:81</a></div></div>
<div class="ttc" id="agraph__coloring_8cpp_html_a8c47fa37fb6eeeb781b2ec1b05af6b07"><div class="ttname"><a href="../../d3/d40/graph__coloring_8cpp.html#a8c47fa37fb6eeeb781b2ec1b05af6b07">backtracking::graph_coloring::printSolution</a></div><div class="ttdeci">void printSolution(const std::array&lt; int, V &gt; &amp;color)</div><div class="ttdoc">A utility function to print the solution.</div><div class="ttdef"><b>Definition</b> <a href="#l00041">graph_coloring.cpp:41</a></div></div>
<div class="ttc" id="agraph__coloring_8cpp_html_a976efe049deb042bf1f02612e181ab1d"><div class="ttname"><a href="../../d3/d40/graph__coloring_8cpp.html#a976efe049deb042bf1f02612e181ab1d">backtracking::graph_coloring::isSafe</a></div><div class="ttdeci">bool isSafe(int v, const std::array&lt; std::array&lt; int, V &gt;, V &gt; &amp;graph, const std::array&lt; int, V &gt; &amp;color, int c)</div><div class="ttdoc">Utility function to check if the current color assignment is safe for vertex v.</div><div class="ttdef"><b>Definition</b> <a href="#l00061">graph_coloring.cpp:61</a></div></div>
<div class="ttc" id="agraph__coloring_8cpp_html_ae66f6b31b5ad750f1fe042a706a4e3d4"><div class="ttname"><a href="../../d3/d40/graph__coloring_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a></div><div class="ttdeci">int main()</div><div class="ttdoc">Main function.</div><div class="ttdef"><b>Definition</b> <a href="#l00111">graph_coloring.cpp:111</a></div></div>
<div class="ttc" id="anamespacebacktracking_html"><div class="ttname"><a href="../../db/dc0/namespacebacktracking.html">backtracking</a></div><div class="ttdoc">for vector container</div></div>
<div class="ttc" id="anamespacegraph__coloring_html"><div class="ttname"><a href="../../d7/d08/namespacegraph__coloring.html">graph_coloring</a></div><div class="ttdoc">Functions for the Graph Coloring algorithm,.</div></div>
<div class="ttc" id="anamespacegraph_html"><div class="ttname"><a href="../../df/dce/namespacegraph.html">graph</a></div><div class="ttdoc">Graph Algorithms.</div></div>

View File

@@ -1,19 +1,17 @@
<map id="graph/breadth_first_search.cpp" name="graph/breadth_first_search.cpp">
<area shape="rect" id="Node000001" title="Breadth First Search Algorithm (Breadth First Search)" alt="" coords="275,5,404,46"/>
<area shape="rect" id="Node000001" title="Breadth First Search Algorithm (Breadth First Search)" alt="" coords="242,5,371,46"/>
<area shape="rect" id="Node000002" title=" " alt="" coords="5,94,80,120"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="275,47,95,94,94,89,274,42"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="242,49,96,93,94,87,240,44"/>
<area shape="rect" id="Node000003" title=" " alt="" coords="104,94,168,120"/>
<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="290,49,182,90,180,85,288,44"/>
<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="265,49,177,90,175,85,263,44"/>
<area shape="rect" id="Node000004" title=" " alt="" coords="192,94,264,120"/>
<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="314,49,259,87,256,82,311,44"/>
<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="289,48,252,85,249,81,285,45"/>
<area shape="rect" id="Node000005" title=" " alt="" coords="287,94,326,120"/>
<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="334,47,320,81,315,78,329,45"/>
<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="309,46,309,78,304,78,304,46"/>
<area shape="rect" id="Node000006" title=" " alt="" coords="350,94,396,120"/>
<area shape="poly" id="edge5_Node000001_Node000006" title=" " alt="" coords="351,45,365,78,360,81,346,47"/>
<area shape="poly" id="edge5_Node000001_Node000006" title=" " alt="" coords="325,45,355,80,351,83,321,48"/>
<area shape="rect" id="Node000007" title=" " alt="" coords="421,94,477,120"/>
<area shape="poly" id="edge6_Node000001_Node000007" title=" " alt="" coords="368,44,422,82,419,87,365,49"/>
<area shape="poly" id="edge6_Node000001_Node000007" title=" " alt="" coords="343,44,415,84,413,88,341,49"/>
<area shape="rect" id="Node000008" title=" " alt="" coords="501,94,554,120"/>
<area shape="poly" id="edge7_Node000001_Node000008" title=" " alt="" coords="388,44,488,86,486,91,386,49"/>
<area shape="rect" id="Node000009" title=" " alt="" coords="579,94,636,120"/>
<area shape="poly" id="edge8_Node000001_Node000009" title=" " alt="" coords="406,44,565,90,564,95,404,49"/>
<area shape="poly" id="edge7_Node000001_Node000008" title=" " alt="" coords="363,44,488,88,486,93,361,49"/>
</map>

View File

@@ -1 +1 @@
bdd0a49cd06946011c73edf0774d83de
b6309b94241bfb1d9aa0df99347985bb

View File

@@ -4,8 +4,8 @@
<!-- Generated by graphviz version 12.2.1 (20241206.2353)
-->
<!-- Title: graph/breadth_first_search.cpp Pages: 1 -->
<svg width="481pt" height="94pt"
viewBox="0.00 0.00 481.38 93.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="420pt" height="94pt"
viewBox="0.00 0.00 419.88 93.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
@@ -23,9 +23,9 @@
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Breadth First Search Algorithm (Breadth First Search)">
<polygon fill="#999999" stroke="#666666" points="299.38,-85.75 202.38,-85.75 202.38,-55.25 299.38,-55.25 299.38,-85.75"/>
<text text-anchor="start" x="210.38" y="-72.25" font-family="Helvetica,sans-Serif" font-size="10.00">graph/breadth_first</text>
<text text-anchor="middle" x="250.88" y="-61" font-family="Helvetica,sans-Serif" font-size="10.00">_search.cpp</text>
<polygon fill="#999999" stroke="#666666" points="274.38,-85.75 177.38,-85.75 177.38,-55.25 274.38,-55.25 274.38,-85.75"/>
<text text-anchor="start" x="185.38" y="-72.25" font-family="Helvetica,sans-Serif" font-size="10.00">graph/breadth_first</text>
<text text-anchor="middle" x="225.88" y="-61" font-family="Helvetica,sans-Serif" font-size="10.00">_search.cpp</text>
</a>
</g>
</g>
@@ -42,8 +42,8 @@
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M201.94,-56.58C161.39,-45.87 104.51,-30.86 66.96,-20.94"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="67.99,-17.6 57.43,-18.43 66.2,-24.36 67.99,-17.6"/>
<path fill="none" stroke="#63b8ff" d="M176.93,-54.95C143.07,-44.88 98.61,-31.66 67.08,-22.28"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="68.13,-18.94 57.54,-19.45 66.13,-25.65 68.13,-18.94"/>
</a>
</g>
</g>
@@ -60,8 +60,8 @@
<g id="edge2_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M212.66,-54.8C187.9,-45.27 155.94,-32.97 132.03,-23.77"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="133.34,-20.52 122.75,-20.2 130.83,-27.06 133.34,-20.52"/>
<path fill="none" stroke="#63b8ff" d="M193.91,-54.8C173.66,-45.48 147.66,-33.52 127.82,-24.4"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="129.43,-21.29 118.88,-20.29 126.5,-27.65 129.43,-21.29"/>
</a>
</g>
</g>
@@ -78,8 +78,8 @@
<g id="edge3_Node000001_Node000004" class="edge">
<title>Node1&#45;&gt;Node4</title>
<g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M230.11,-54.95C217.69,-46.24 201.91,-35.18 189.22,-26.28"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="191.26,-23.44 181.06,-20.57 187.24,-29.18 191.26,-23.44"/>
<path fill="none" stroke="#63b8ff" d="M211.29,-54.95C203,-46.67 192.57,-36.27 183.91,-27.62"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="186.59,-25.36 177.04,-20.77 181.65,-30.31 186.59,-25.36"/>
</a>
</g>
</g>
@@ -96,8 +96,8 @@
<g id="edge4_Node000001_Node000005" class="edge">
<title>Node1&#45;&gt;Node5</title>
<g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M244.7,-54.95C241.51,-47.45 237.58,-38.2 234.14,-30.1"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="237.45,-28.93 230.32,-21.09 231.01,-31.67 237.45,-28.93"/>
<path fill="none" stroke="#63b8ff" d="M225.88,-54.95C225.88,-47.71 225.88,-38.84 225.88,-30.94"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="229.38,-31.21 225.88,-21.21 222.38,-31.21 229.38,-31.21"/>
</a>
</g>
</g>
@@ -114,8 +114,8 @@
<g id="edge5_Node000001_Node000006" class="edge">
<title>Node1&#45;&gt;Node6</title>
<g id="a_edge5_Node000001_Node000006"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M257.05,-54.95C260.24,-47.45 264.17,-38.2 267.61,-30.1"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="270.74,-31.67 271.43,-21.09 264.3,-28.93 270.74,-31.67"/>
<path fill="none" stroke="#63b8ff" d="M238.23,-54.95C245.04,-46.93 253.55,-36.92 260.75,-28.44"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="263.38,-30.74 267.19,-20.85 258.05,-26.21 263.38,-30.74"/>
</a>
</g>
</g>
@@ -132,8 +132,8 @@
<g id="edge6_Node000001_Node000007" class="edge">
<title>Node1&#45;&gt;Node7</title>
<g id="a_edge6_Node000001_Node000007"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M271.14,-54.95C283.27,-46.24 298.68,-35.18 311.07,-26.28"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="312.92,-29.26 319,-20.58 308.84,-23.57 312.92,-29.26"/>
<path fill="none" stroke="#63b8ff" d="M252.6,-54.8C269.05,-45.74 290.05,-34.19 306.45,-25.16"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="308.07,-28.27 315.14,-20.38 304.69,-22.14 308.07,-28.27"/>
</a>
</g>
</g>
@@ -150,26 +150,8 @@
<g id="edge7_Node000001_Node000008" class="edge">
<title>Node1&#45;&gt;Node8</title>
<g id="a_edge7_Node000001_Node000008"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M286.09,-54.8C309.12,-45.18 338.91,-32.74 361.01,-23.51"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="362.21,-26.81 370.09,-19.72 359.51,-20.35 362.21,-26.81"/>
</a>
</g>
</g>
<!-- Node9 -->
<g id="Node000009" class="node">
<title>Node9</title>
<g id="a_Node000009"><a xlink:title=" ">
<polygon fill="#e0e0e0" stroke="#999999" points="473.38,-19.25 430.38,-19.25 430.38,0 473.38,0 473.38,-19.25"/>
<text text-anchor="middle" x="451.88" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">vector</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node9 -->
<g id="edge8_Node000001_Node000009" class="edge">
<title>Node1&#45;&gt;Node9</title>
<g id="a_edge8_Node000001_Node000009"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M299.79,-55.17C336.9,-44.3 386.88,-29.66 419.24,-20.18"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="419.84,-23.66 428.45,-17.49 417.87,-16.94 419.84,-23.66"/>
<path fill="none" stroke="#63b8ff" d="M267.34,-54.8C296.41,-44.48 334.64,-30.92 361.04,-21.56"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="361.89,-24.97 370.14,-18.33 359.55,-18.38 361.89,-24.97"/>
</a>
</g>
</g>

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

@@ -4,17 +4,17 @@
<!-- Generated by graphviz version 12.2.1 (20241206.2353)
-->
<!-- Title: graph/breadth_first_search.cpp Pages: 1 -->
<svg width="481pt" height="94pt"
viewBox="0.00 0.00 481.38 93.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="420pt" height="94pt"
viewBox="0.00 0.00 419.88 93.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 89.75)">
<title>graph/breadth_first_search.cpp</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Breadth First Search Algorithm (Breadth First Search)">
<polygon fill="#999999" stroke="#666666" points="299.38,-85.75 202.38,-85.75 202.38,-55.25 299.38,-55.25 299.38,-85.75"/>
<text text-anchor="start" x="210.38" y="-72.25" font-family="Helvetica,sans-Serif" font-size="10.00">graph/breadth_first</text>
<text text-anchor="middle" x="250.88" y="-61" font-family="Helvetica,sans-Serif" font-size="10.00">_search.cpp</text>
<polygon fill="#999999" stroke="#666666" points="274.38,-85.75 177.38,-85.75 177.38,-55.25 274.38,-55.25 274.38,-85.75"/>
<text text-anchor="start" x="185.38" y="-72.25" font-family="Helvetica,sans-Serif" font-size="10.00">graph/breadth_first</text>
<text text-anchor="middle" x="225.88" y="-61" font-family="Helvetica,sans-Serif" font-size="10.00">_search.cpp</text>
</a>
</g>
</g>
@@ -31,8 +31,8 @@
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M201.94,-56.58C161.39,-45.87 104.51,-30.86 66.96,-20.94"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="67.99,-17.6 57.43,-18.43 66.2,-24.36 67.99,-17.6"/>
<path fill="none" stroke="#63b8ff" d="M176.93,-54.95C143.07,-44.88 98.61,-31.66 67.08,-22.28"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="68.13,-18.94 57.54,-19.45 66.13,-25.65 68.13,-18.94"/>
</a>
</g>
</g>
@@ -49,8 +49,8 @@
<g id="edge2_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M212.66,-54.8C187.9,-45.27 155.94,-32.97 132.03,-23.77"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="133.34,-20.52 122.75,-20.2 130.83,-27.06 133.34,-20.52"/>
<path fill="none" stroke="#63b8ff" d="M193.91,-54.8C173.66,-45.48 147.66,-33.52 127.82,-24.4"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="129.43,-21.29 118.88,-20.29 126.5,-27.65 129.43,-21.29"/>
</a>
</g>
</g>
@@ -67,8 +67,8 @@
<g id="edge3_Node000001_Node000004" class="edge">
<title>Node1&#45;&gt;Node4</title>
<g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M230.11,-54.95C217.69,-46.24 201.91,-35.18 189.22,-26.28"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="191.26,-23.44 181.06,-20.57 187.24,-29.18 191.26,-23.44"/>
<path fill="none" stroke="#63b8ff" d="M211.29,-54.95C203,-46.67 192.57,-36.27 183.91,-27.62"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="186.59,-25.36 177.04,-20.77 181.65,-30.31 186.59,-25.36"/>
</a>
</g>
</g>
@@ -85,8 +85,8 @@
<g id="edge4_Node000001_Node000005" class="edge">
<title>Node1&#45;&gt;Node5</title>
<g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M244.7,-54.95C241.51,-47.45 237.58,-38.2 234.14,-30.1"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="237.45,-28.93 230.32,-21.09 231.01,-31.67 237.45,-28.93"/>
<path fill="none" stroke="#63b8ff" d="M225.88,-54.95C225.88,-47.71 225.88,-38.84 225.88,-30.94"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="229.38,-31.21 225.88,-21.21 222.38,-31.21 229.38,-31.21"/>
</a>
</g>
</g>
@@ -103,8 +103,8 @@
<g id="edge5_Node000001_Node000006" class="edge">
<title>Node1&#45;&gt;Node6</title>
<g id="a_edge5_Node000001_Node000006"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M257.05,-54.95C260.24,-47.45 264.17,-38.2 267.61,-30.1"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="270.74,-31.67 271.43,-21.09 264.3,-28.93 270.74,-31.67"/>
<path fill="none" stroke="#63b8ff" d="M238.23,-54.95C245.04,-46.93 253.55,-36.92 260.75,-28.44"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="263.38,-30.74 267.19,-20.85 258.05,-26.21 263.38,-30.74"/>
</a>
</g>
</g>
@@ -121,8 +121,8 @@
<g id="edge6_Node000001_Node000007" class="edge">
<title>Node1&#45;&gt;Node7</title>
<g id="a_edge6_Node000001_Node000007"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M271.14,-54.95C283.27,-46.24 298.68,-35.18 311.07,-26.28"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="312.92,-29.26 319,-20.58 308.84,-23.57 312.92,-29.26"/>
<path fill="none" stroke="#63b8ff" d="M252.6,-54.8C269.05,-45.74 290.05,-34.19 306.45,-25.16"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="308.07,-28.27 315.14,-20.38 304.69,-22.14 308.07,-28.27"/>
</a>
</g>
</g>
@@ -139,26 +139,8 @@
<g id="edge7_Node000001_Node000008" class="edge">
<title>Node1&#45;&gt;Node8</title>
<g id="a_edge7_Node000001_Node000008"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M286.09,-54.8C309.12,-45.18 338.91,-32.74 361.01,-23.51"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="362.21,-26.81 370.09,-19.72 359.51,-20.35 362.21,-26.81"/>
</a>
</g>
</g>
<!-- Node9 -->
<g id="Node000009" class="node">
<title>Node9</title>
<g id="a_Node000009"><a xlink:title=" ">
<polygon fill="#e0e0e0" stroke="#999999" points="473.38,-19.25 430.38,-19.25 430.38,0 473.38,0 473.38,-19.25"/>
<text text-anchor="middle" x="451.88" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">vector</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node9 -->
<g id="edge8_Node000001_Node000009" class="edge">
<title>Node1&#45;&gt;Node9</title>
<g id="a_edge8_Node000001_Node000009"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M299.79,-55.17C336.9,-44.3 386.88,-29.66 419.24,-20.18"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="419.84,-23.66 428.45,-17.49 417.87,-16.94 419.84,-23.66"/>
<path fill="none" stroke="#63b8ff" d="M267.34,-54.8C296.41,-44.48 334.64,-30.92 361.04,-21.56"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="361.89,-24.97 370.14,-18.33 359.55,-18.38 361.89,-24.97"/>
</a>
</g>
</g>

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -136,11 +136,10 @@ $(function(){initNavTree('d7/d83/trie__tree_8cpp.html','../../'); initResizable(
<code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;memory&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for trie_tree.cpp:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../de/d99/trie__tree_8cpp__incl.svg" width="496" height="126"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../de/d99/trie__tree_8cpp__incl.svg" width="415" height="126"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
<p><a href="../../d7/d83/trie__tree_8cpp_source.html">Go to the source code of this file.</a></p>
@@ -194,13 +193,13 @@ Functions</h2></td></tr>
<p>Main function. </p>
<dl class="section return"><dt>Returns</dt><dd>0 on exit </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00205">205</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 205</span> {</div>
<div class="line"><span class="lineno"> 206</span> <a class="code hl_function" href="#aa8dca7b867074164d5f45b0f3851269d">test</a>();</div>
<div class="line"><span class="lineno"> 207</span> </div>
<div class="line"><span class="lineno"> 208</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><span class="lineno"> 209</span>}</div>
<div class="ttc" id="atrie__tree_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Testing function.</div><div class="ttdef"><b>Definition</b> <a href="../../d7/d83/trie__tree_8cpp_source.html#l00178">trie_tree.cpp:178</a></div></div>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00204">204</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 204</span> {</div>
<div class="line"><span class="lineno"> 205</span> <a class="code hl_function" href="#aa8dca7b867074164d5f45b0f3851269d">test</a>();</div>
<div class="line"><span class="lineno"> 206</span> </div>
<div class="line"><span class="lineno"> 207</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><span class="lineno"> 208</span>}</div>
<div class="ttc" id="atrie__tree_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Testing function.</div><div class="ttdef"><b>Definition</b> <a href="../../d7/d83/trie__tree_8cpp_source.html#l00177">trie_tree.cpp:177</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -230,31 +229,31 @@ Functions</h2></td></tr>
<p>Testing function. </p>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00178">178</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 178</span> {</div>
<div class="line"><span class="lineno"> 179</span> <a class="code hl_class" href="../../d0/d3e/classdata__structures_1_1trie.html">data_structures::trie</a> root;</div>
<div class="line"><span class="lineno"> 180</span> root.<a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#a0ab94bc6417e3f59fab33cea5b64d546">insert</a>(<span class="stringliteral">&quot;Hello&quot;</span>);</div>
<div class="line"><span class="lineno"> 181</span> root.insert(<span class="stringliteral">&quot;World&quot;</span>);</div>
<div class="line"><span class="lineno"> 182</span> </div>
<div class="line"><span class="lineno"> 183</span> assert(!root.search(<span class="stringliteral">&quot;hello&quot;</span>, 0));</div>
<div class="line"><span class="lineno"> 184</span> std::cout &lt;&lt; <span class="stringliteral">&quot;hello - &quot;</span> &lt;&lt; root.search(<span class="stringliteral">&quot;hello&quot;</span>, 0) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 185</span> </div>
<div class="line"><span class="lineno"> 186</span> assert(root.search(<span class="stringliteral">&quot;Hello&quot;</span>, 0));</div>
<div class="line"><span class="lineno"> 187</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Hello - &quot;</span> &lt;&lt; root.search(<span class="stringliteral">&quot;Hello&quot;</span>, 0) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 188</span> </div>
<div class="line"><span class="lineno"> 189</span> assert(!root.search(<span class="stringliteral">&quot;Word&quot;</span>, 0));</div>
<div class="line"><span class="lineno"> 190</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Word - &quot;</span> &lt;&lt; root.search(<span class="stringliteral">&quot;Word&quot;</span>, 0) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 191</span> </div>
<div class="line"><span class="lineno"> 192</span> assert(root.search(<span class="stringliteral">&quot;World&quot;</span>, 0));</div>
<div class="line"><span class="lineno"> 193</span> std::cout &lt;&lt; <span class="stringliteral">&quot;World - &quot;</span> &lt;&lt; root.search(<span class="stringliteral">&quot;World&quot;</span>, 0) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 194</span> </div>
<div class="line"><span class="lineno"> 195</span> <span class="comment">// Following lines of code give erroneous output</span></div>
<div class="line"><span class="lineno"> 196</span> <span class="comment">// root.deleteString(&quot;hello&quot;, 0);</span></div>
<div class="line"><span class="lineno"> 197</span> <span class="comment">// assert(!root.search(&quot;hello&quot;, 0));</span></div>
<div class="line"><span class="lineno"> 198</span> <span class="comment">// std::cout &lt;&lt; &quot;hello - &quot; &lt;&lt; root.search(&quot;world&quot;, 0) &lt;&lt; &quot;\n&quot;;</span></div>
<div class="line"><span class="lineno"> 199</span>}</div>
<div class="ttc" id="aclassdata__structures_1_1trie_html"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html">data_structures::trie</a></div><div class="ttdoc">Trie implementation for small-case English alphabets a-z</div><div class="ttdef"><b>Definition</b> <a href="../../d7/d83/trie__tree_8cpp_source.html#l00025">trie_tree.cpp:25</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a0ab94bc6417e3f59fab33cea5b64d546"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html#a0ab94bc6417e3f59fab33cea5b64d546">data_structures::trie::insert</a></div><div class="ttdeci">void insert(const std::string &amp;str)</div><div class="ttdef"><b>Definition</b> <a href="../../d7/d83/trie__tree_8cpp_source.html#l00077">trie_tree.cpp:77</a></div></div>
<p class="definition">Definition at line <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html#l00177">177</a> of file <a class="el" href="../../d7/d83/trie__tree_8cpp_source.html">trie_tree.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 177</span> {</div>
<div class="line"><span class="lineno"> 178</span> <a class="code hl_class" href="../../d0/d3e/classdata__structures_1_1trie.html">data_structures::trie</a> root;</div>
<div class="line"><span class="lineno"> 179</span> root.<a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#a0ab94bc6417e3f59fab33cea5b64d546">insert</a>(<span class="stringliteral">&quot;Hello&quot;</span>);</div>
<div class="line"><span class="lineno"> 180</span> root.insert(<span class="stringliteral">&quot;World&quot;</span>);</div>
<div class="line"><span class="lineno"> 181</span> </div>
<div class="line"><span class="lineno"> 182</span> assert(!root.search(<span class="stringliteral">&quot;hello&quot;</span>, 0));</div>
<div class="line"><span class="lineno"> 183</span> std::cout &lt;&lt; <span class="stringliteral">&quot;hello - &quot;</span> &lt;&lt; root.search(<span class="stringliteral">&quot;hello&quot;</span>, 0) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 184</span> </div>
<div class="line"><span class="lineno"> 185</span> assert(root.search(<span class="stringliteral">&quot;Hello&quot;</span>, 0));</div>
<div class="line"><span class="lineno"> 186</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Hello - &quot;</span> &lt;&lt; root.search(<span class="stringliteral">&quot;Hello&quot;</span>, 0) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 187</span> </div>
<div class="line"><span class="lineno"> 188</span> assert(!root.search(<span class="stringliteral">&quot;Word&quot;</span>, 0));</div>
<div class="line"><span class="lineno"> 189</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Word - &quot;</span> &lt;&lt; root.search(<span class="stringliteral">&quot;Word&quot;</span>, 0) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 190</span> </div>
<div class="line"><span class="lineno"> 191</span> assert(root.search(<span class="stringliteral">&quot;World&quot;</span>, 0));</div>
<div class="line"><span class="lineno"> 192</span> std::cout &lt;&lt; <span class="stringliteral">&quot;World - &quot;</span> &lt;&lt; root.search(<span class="stringliteral">&quot;World&quot;</span>, 0) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><span class="lineno"> 193</span> </div>
<div class="line"><span class="lineno"> 194</span> <span class="comment">// Following lines of code give erroneous output</span></div>
<div class="line"><span class="lineno"> 195</span> <span class="comment">// root.deleteString(&quot;hello&quot;, 0);</span></div>
<div class="line"><span class="lineno"> 196</span> <span class="comment">// assert(!root.search(&quot;hello&quot;, 0));</span></div>
<div class="line"><span class="lineno"> 197</span> <span class="comment">// std::cout &lt;&lt; &quot;hello - &quot; &lt;&lt; root.search(&quot;world&quot;, 0) &lt;&lt; &quot;\n&quot;;</span></div>
<div class="line"><span class="lineno"> 198</span>}</div>
<div class="ttc" id="aclassdata__structures_1_1trie_html"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html">data_structures::trie</a></div><div class="ttdoc">Trie implementation for small-case English alphabets a-z</div><div class="ttdef"><b>Definition</b> <a href="../../d7/d83/trie__tree_8cpp_source.html#l00024">trie_tree.cpp:24</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a0ab94bc6417e3f59fab33cea5b64d546"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html#a0ab94bc6417e3f59fab33cea5b64d546">data_structures::trie::insert</a></div><div class="ttdeci">void insert(const std::string &amp;str)</div><div class="ttdef"><b>Definition</b> <a href="../../d7/d83/trie__tree_8cpp_source.html#l00076">trie_tree.cpp:76</a></div></div>
</div><!-- fragment -->
</div>
</div>

View File

@@ -130,181 +130,180 @@ $(function(){initNavTree('d7/d83/trie__tree_8cpp_source.html','../../'); initRes
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include &lt;iostream&gt;</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d5/d3c/namespacedata__structures.html">data_structures</a> {</div>
<div class="foldopen" id="foldopen00025" data-start="{" data-end="};">
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html"> 25</a></span><span class="keyword">class </span><a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#a87d8bf99aea936f9381141753f1e90a8">trie</a> {</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html#a4bfac4be6ed1a34c7159eddb42469191"> 27</a></span> <span class="keyword">static</span> <span class="keyword">constexpr</span> uint8_t <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a4bfac4be6ed1a34c7159eddb42469191">NUM_CHARS</a> = 26; </div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b"> 29</a></span> std::array&lt;std::shared_ptr&lt;trie&gt;, <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a4bfac4be6ed1a34c7159eddb42469191">NUM_CHARS &lt;&lt; 1&gt;</a> <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">arr</a>;</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html#a4cb0f775b5a4bc14a6d39b5c93883eb6"> 30</a></span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a4cb0f775b5a4bc14a6d39b5c93883eb6">isEndofWord</a> = <span class="keyword">false</span>; </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span></div>
<div class="foldopen" id="foldopen00038" data-start="{" data-end="}">
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html#aab373beb3f618b90922528c68797d988"> 38</a></span> uint8_t <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#aab373beb3f618b90922528c68797d988">char_to_int</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>&amp; ch)<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordflow">if</span> (ch &gt;= <span class="charliteral">&#39;A&#39;</span> &amp;&amp; ch &lt;= <span class="charliteral">&#39;Z&#39;</span>) {</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keywordflow">return</span> ch - <span class="charliteral">&#39;A&#39;</span>;</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ch &gt;= <span class="charliteral">&#39;a&#39;</span> &amp;&amp; ch &lt;= <span class="charliteral">&#39;z&#39;</span>) {</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keywordflow">return</span> ch - <span class="charliteral">&#39;a&#39;</span> + <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a4bfac4be6ed1a34c7159eddb42469191">NUM_CHARS</a>;</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> }</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;Invalid character present. Exiting...&quot;</span>;</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> std::exit(EXIT_FAILURE);</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> }</div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d5/d3c/namespacedata__structures.html">data_structures</a> {</div>
<div class="foldopen" id="foldopen00024" data-start="{" data-end="};">
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html"> 24</a></span><span class="keyword">class </span><a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#a87d8bf99aea936f9381141753f1e90a8">trie</a> {</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html#a4bfac4be6ed1a34c7159eddb42469191"> 26</a></span> <span class="keyword">static</span> <span class="keyword">constexpr</span> uint8_t <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a4bfac4be6ed1a34c7159eddb42469191">NUM_CHARS</a> = 26; </div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b"> 28</a></span> std::array&lt;std::shared_ptr&lt;trie&gt;, <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a4bfac4be6ed1a34c7159eddb42469191">NUM_CHARS &lt;&lt; 1&gt;</a> <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">arr</a>;</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html#a4cb0f775b5a4bc14a6d39b5c93883eb6"> 29</a></span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a4cb0f775b5a4bc14a6d39b5c93883eb6">isEndofWord</a> = <span class="keyword">false</span>; </div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span></div>
<div class="foldopen" id="foldopen00037" data-start="{" data-end="}">
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html#aab373beb3f618b90922528c68797d988"> 37</a></span> uint8_t <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#aab373beb3f618b90922528c68797d988">char_to_int</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>&amp; ch)<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordflow">if</span> (ch &gt;= <span class="charliteral">&#39;A&#39;</span> &amp;&amp; ch &lt;= <span class="charliteral">&#39;Z&#39;</span>) {</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordflow">return</span> ch - <span class="charliteral">&#39;A&#39;</span>;</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ch &gt;= <span class="charliteral">&#39;a&#39;</span> &amp;&amp; ch &lt;= <span class="charliteral">&#39;z&#39;</span>) {</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keywordflow">return</span> ch - <span class="charliteral">&#39;a&#39;</span> + <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a4bfac4be6ed1a34c7159eddb42469191">NUM_CHARS</a>;</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> }</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;Invalid character present. Exiting...&quot;</span>;</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> std::exit(EXIT_FAILURE);</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> }</div>
</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span></div>
<div class="foldopen" id="foldopen00056" data-start="{" data-end="}">
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html#a961eb5d576d2420f2036009154397c63"> 56</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#a961eb5d576d2420f2036009154397c63">search</a>(<span class="keyword">const</span> std::shared_ptr&lt;trie&gt;&amp; root, <span class="keyword">const</span> std::string&amp; str,</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keywordtype">int</span> index) {</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordflow">if</span> (index == str.length()) {</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keywordflow">if</span> (!root-&gt;isEndofWord) {</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> }</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> }</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordtype">int</span> j = <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#aab373beb3f618b90922528c68797d988">char_to_int</a>(str[index]);</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">if</span> (!root-&gt;arr[j]) {</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> }</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keywordflow">return</span> <a class="code hl_namespace" href="../../d9/dca/namespacesearch.html">search</a>(root-&gt;arr[j], str, index + 1);</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> }</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span></div>
<div class="foldopen" id="foldopen00055" data-start="{" data-end="}">
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html#a961eb5d576d2420f2036009154397c63"> 55</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#a961eb5d576d2420f2036009154397c63">search</a>(<span class="keyword">const</span> std::shared_ptr&lt;trie&gt;&amp; root, <span class="keyword">const</span> std::string&amp; str,</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keywordtype">int</span> index) {</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keywordflow">if</span> (index == str.length()) {</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordflow">if</span> (!root-&gt;isEndofWord) {</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> }</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> }</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="keywordtype">int</span> j = <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#aab373beb3f618b90922528c68797d988">char_to_int</a>(str[index]);</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordflow">if</span> (!root-&gt;arr[j]) {</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> }</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keywordflow">return</span> <a class="code hl_namespace" href="../../d9/dca/namespacesearch.html">search</a>(root-&gt;arr[j], str, index + 1);</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> }</div>
</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html#a87d8bf99aea936f9381141753f1e90a8"> 72</a></span> <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#a87d8bf99aea936f9381141753f1e90a8">trie</a>() = <span class="keywordflow">default</span>; </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span></div>
<div class="foldopen" id="foldopen00077" data-start="{" data-end="}">
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html#a0ab94bc6417e3f59fab33cea5b64d546"> 77</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#a0ab94bc6417e3f59fab33cea5b64d546">insert</a>(<span class="keyword">const</span> std::string&amp; str) {</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> std::shared_ptr&lt;trie&gt; root(<span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span>&amp; ch : str) {</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="keywordtype">int</span> j = <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#aab373beb3f618b90922528c68797d988">char_to_int</a>(ch);</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keywordflow">if</span> (root) {</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keywordflow">if</span> (root-&gt;arr[j]) {</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> root = root-&gt;arr[j];</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> std::shared_ptr&lt;trie&gt; temp(<span class="keyword">new</span> <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#a87d8bf99aea936f9381141753f1e90a8">trie</a>());</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> root-&gt;arr[j] = temp;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> root = temp;</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> }</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j]) {</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> root = <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j];</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> std::shared_ptr&lt;trie&gt; temp(<span class="keyword">new</span> <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#a87d8bf99aea936f9381141753f1e90a8">trie</a>());</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j] = temp;</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> root = temp;</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> }</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> }</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> root-&gt;isEndofWord = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> }</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html#a87d8bf99aea936f9381141753f1e90a8"> 71</a></span> <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#a87d8bf99aea936f9381141753f1e90a8">trie</a>() = <span class="keywordflow">default</span>; </div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span></div>
<div class="foldopen" id="foldopen00076" data-start="{" data-end="}">
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html#a0ab94bc6417e3f59fab33cea5b64d546"> 76</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#a0ab94bc6417e3f59fab33cea5b64d546">insert</a>(<span class="keyword">const</span> std::string&amp; str) {</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> std::shared_ptr&lt;trie&gt; root(<span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span>&amp; ch : str) {</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="keywordtype">int</span> j = <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#aab373beb3f618b90922528c68797d988">char_to_int</a>(ch);</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="keywordflow">if</span> (root) {</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keywordflow">if</span> (root-&gt;arr[j]) {</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> root = root-&gt;arr[j];</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> std::shared_ptr&lt;trie&gt; temp(<span class="keyword">new</span> <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#a87d8bf99aea936f9381141753f1e90a8">trie</a>());</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> root-&gt;arr[j] = temp;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> root = temp;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> }</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j]) {</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> root = <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j];</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> std::shared_ptr&lt;trie&gt; temp(<span class="keyword">new</span> <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#a87d8bf99aea936f9381141753f1e90a8">trie</a>());</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j] = temp;</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> root = temp;</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> }</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> }</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> root-&gt;isEndofWord = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> }</div>
</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span></div>
<div class="foldopen" id="foldopen00107" data-start="{" data-end="}">
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html#a499f87fd833203ef9492b4870aa6d42d"> 107</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#a499f87fd833203ef9492b4870aa6d42d">search</a>(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">int</span> index) {</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keywordflow">if</span> (index == str.length()) {</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a4cb0f775b5a4bc14a6d39b5c93883eb6">isEndofWord</a>) {</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> }</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> }</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordtype">int</span> j = <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#aab373beb3f618b90922528c68797d988">char_to_int</a>(str[index]);</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j]) {</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> }</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordflow">return</span> <a class="code hl_namespace" href="../../d9/dca/namespacesearch.html">search</a>(<a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j], str, index + 1);</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> }</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span></div>
<div class="foldopen" id="foldopen00106" data-start="{" data-end="}">
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html#a499f87fd833203ef9492b4870aa6d42d"> 106</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#a499f87fd833203ef9492b4870aa6d42d">search</a>(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">int</span> index) {</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="keywordflow">if</span> (index == str.length()) {</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a4cb0f775b5a4bc14a6d39b5c93883eb6">isEndofWord</a>) {</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> }</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> }</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keywordtype">int</span> j = <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#aab373beb3f618b90922528c68797d988">char_to_int</a>(str[index]);</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j]) {</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> }</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordflow">return</span> <a class="code hl_namespace" href="../../d9/dca/namespacesearch.html">search</a>(<a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j], str, index + 1);</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> }</div>
</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span></div>
<div class="foldopen" id="foldopen00134" data-start="{" data-end="}">
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html#aeac27cfd397d2dd3f2f519efffafeeab"> 134</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#aeac27cfd397d2dd3f2f519efffafeeab">deleteString</a>(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">int</span> index) {</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keywordflow">if</span> (index == str.length()) {</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a4cb0f775b5a4bc14a6d39b5c93883eb6">isEndofWord</a>) {</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> }</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a4cb0f775b5a4bc14a6d39b5c93883eb6">isEndofWord</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="comment">// following lines - possible source of error?</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="comment">// for (int i = 0; i &lt; NUM_CHARS; i++)</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="comment">// if (!arr[i])</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="comment">// return false;</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> }</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="keywordtype">int</span> j = <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#aab373beb3f618b90922528c68797d988">char_to_int</a>(str[index]);</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j]) {</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> }</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="keywordtype">bool</span> var = <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#aeac27cfd397d2dd3f2f519efffafeeab">deleteString</a>(str, index + 1);</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <span class="keywordflow">if</span> (var) {</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j].reset();</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a4cb0f775b5a4bc14a6d39b5c93883eb6">isEndofWord</a>) {</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keywordtype">int</span> i = 0;</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a4bfac4be6ed1a34c7159eddb42469191">NUM_CHARS</a>; i++) {</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[i]) {</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> }</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> }</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> }</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> }</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> </div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="comment">/* should not return here */</span></div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> std::cout &lt;&lt; __func__ &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; __LINE__</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> &lt;&lt; <span class="stringliteral">&quot;Should not reach this line\n&quot;</span>;</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> }</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span></div>
<div class="foldopen" id="foldopen00133" data-start="{" data-end="}">
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"><a class="line" href="../../d0/d3e/classdata__structures_1_1trie.html#aeac27cfd397d2dd3f2f519efffafeeab"> 133</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#aeac27cfd397d2dd3f2f519efffafeeab">deleteString</a>(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">int</span> index) {</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keywordflow">if</span> (index == str.length()) {</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a4cb0f775b5a4bc14a6d39b5c93883eb6">isEndofWord</a>) {</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> }</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a4cb0f775b5a4bc14a6d39b5c93883eb6">isEndofWord</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="comment">// following lines - possible source of error?</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="comment">// for (int i = 0; i &lt; NUM_CHARS; i++)</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="comment">// if (!arr[i])</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="comment">// return false;</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> }</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <span class="keywordtype">int</span> j = <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#aab373beb3f618b90922528c68797d988">char_to_int</a>(str[index]);</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j]) {</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> }</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordtype">bool</span> var = <a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#aeac27cfd397d2dd3f2f519efffafeeab">deleteString</a>(str, index + 1);</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="keywordflow">if</span> (var) {</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[j].reset();</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a4cb0f775b5a4bc14a6d39b5c93883eb6">isEndofWord</a>) {</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="keywordtype">int</span> i = 0;</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a4bfac4be6ed1a34c7159eddb42469191">NUM_CHARS</a>; i++) {</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">arr</a>[i]) {</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> }</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> }</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> }</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> }</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> </div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <span class="comment">/* should not return here */</span></div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> std::cout &lt;&lt; __func__ &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; __LINE__</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> &lt;&lt; <span class="stringliteral">&quot;Should not reach this line\n&quot;</span>;</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> }</div>
</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span>};</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span>};</div>
</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span>} <span class="comment">// namespace data_structures</span></div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span></div>
<div class="foldopen" id="foldopen00178" data-start="{" data-end="}">
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"><a class="line" href="../../d7/d83/trie__tree_8cpp.html#aa8dca7b867074164d5f45b0f3851269d"> 178</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d7/d83/trie__tree_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>() {</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <a class="code hl_class" href="../../d0/d3e/classdata__structures_1_1trie.html">data_structures::trie</a> root;</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> root.<a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#a0ab94bc6417e3f59fab33cea5b64d546">insert</a>(<span class="stringliteral">&quot;Hello&quot;</span>);</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> root.insert(<span class="stringliteral">&quot;World&quot;</span>);</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> </div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> assert(!root.search(<span class="stringliteral">&quot;hello&quot;</span>, 0));</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> std::cout &lt;&lt; <span class="stringliteral">&quot;hello - &quot;</span> &lt;&lt; root.search(<span class="stringliteral">&quot;hello&quot;</span>, 0) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> </div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> assert(root.search(<span class="stringliteral">&quot;Hello&quot;</span>, 0));</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Hello - &quot;</span> &lt;&lt; root.search(<span class="stringliteral">&quot;Hello&quot;</span>, 0) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> </div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> assert(!root.search(<span class="stringliteral">&quot;Word&quot;</span>, 0));</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Word - &quot;</span> &lt;&lt; root.search(<span class="stringliteral">&quot;Word&quot;</span>, 0) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> </div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> assert(root.search(<span class="stringliteral">&quot;World&quot;</span>, 0));</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> std::cout &lt;&lt; <span class="stringliteral">&quot;World - &quot;</span> &lt;&lt; root.search(<span class="stringliteral">&quot;World&quot;</span>, 0) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> </div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="comment">// Following lines of code give erroneous output</span></div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="comment">// root.deleteString(&quot;hello&quot;, 0);</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="comment">// assert(!root.search(&quot;hello&quot;, 0));</span></div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="comment">// std::cout &lt;&lt; &quot;hello - &quot; &lt;&lt; root.search(&quot;world&quot;, 0) &lt;&lt; &quot;\n&quot;;</span></div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span>}</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span>} <span class="comment">// namespace data_structures</span></div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span></div>
<div class="foldopen" id="foldopen00177" data-start="{" data-end="}">
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"><a class="line" href="../../d7/d83/trie__tree_8cpp.html#aa8dca7b867074164d5f45b0f3851269d"> 177</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d7/d83/trie__tree_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>() {</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <a class="code hl_class" href="../../d0/d3e/classdata__structures_1_1trie.html">data_structures::trie</a> root;</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> root.<a class="code hl_function" href="../../d0/d3e/classdata__structures_1_1trie.html#a0ab94bc6417e3f59fab33cea5b64d546">insert</a>(<span class="stringliteral">&quot;Hello&quot;</span>);</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> root.insert(<span class="stringliteral">&quot;World&quot;</span>);</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> </div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> assert(!root.search(<span class="stringliteral">&quot;hello&quot;</span>, 0));</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> std::cout &lt;&lt; <span class="stringliteral">&quot;hello - &quot;</span> &lt;&lt; root.search(<span class="stringliteral">&quot;hello&quot;</span>, 0) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> </div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> assert(root.search(<span class="stringliteral">&quot;Hello&quot;</span>, 0));</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Hello - &quot;</span> &lt;&lt; root.search(<span class="stringliteral">&quot;Hello&quot;</span>, 0) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> </div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> assert(!root.search(<span class="stringliteral">&quot;Word&quot;</span>, 0));</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Word - &quot;</span> &lt;&lt; root.search(<span class="stringliteral">&quot;Word&quot;</span>, 0) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> </div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> assert(root.search(<span class="stringliteral">&quot;World&quot;</span>, 0));</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> std::cout &lt;&lt; <span class="stringliteral">&quot;World - &quot;</span> &lt;&lt; root.search(<span class="stringliteral">&quot;World&quot;</span>, 0) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> </div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <span class="comment">// Following lines of code give erroneous output</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="comment">// root.deleteString(&quot;hello&quot;, 0);</span></div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="comment">// assert(!root.search(&quot;hello&quot;, 0));</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="comment">// std::cout &lt;&lt; &quot;hello - &quot; &lt;&lt; root.search(&quot;world&quot;, 0) &lt;&lt; &quot;\n&quot;;</span></div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span>}</div>
</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span></div>
<div class="foldopen" id="foldopen00205" data-start="{" data-end="}">
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"><a class="line" href="../../d7/d83/trie__tree_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4"> 205</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d7/d83/trie__tree_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a>() {</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <a class="code hl_function" href="../../d7/d83/trie__tree_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>();</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> </div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span>}</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span></div>
<div class="foldopen" id="foldopen00204" data-start="{" data-end="}">
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"><a class="line" href="../../d7/d83/trie__tree_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4"> 204</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d7/d83/trie__tree_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a>() {</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <a class="code hl_function" href="../../d7/d83/trie__tree_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>();</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> </div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span>}</div>
</div>
<div class="ttc" id="aclassdata__structures_1_1trie_html"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html">data_structures::trie</a></div><div class="ttdoc">Trie implementation for small-case English alphabets a-z</div><div class="ttdef"><b>Definition</b> <a href="#l00025">trie_tree.cpp:25</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a0ab94bc6417e3f59fab33cea5b64d546"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html#a0ab94bc6417e3f59fab33cea5b64d546">data_structures::trie::insert</a></div><div class="ttdeci">void insert(const std::string &amp;str)</div><div class="ttdef"><b>Definition</b> <a href="#l00077">trie_tree.cpp:77</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a362dd78748a1f01ab019e55fd6098a8b"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">data_structures::trie::arr</a></div><div class="ttdeci">std::array&lt; std::shared_ptr&lt; trie &gt;, NUM_CHARS&lt;&lt; 1 &gt; arr</div><div class="ttdoc">Recursive tree nodes as an array of shared-pointers.</div><div class="ttdef"><b>Definition</b> <a href="#l00029">trie_tree.cpp:29</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a499f87fd833203ef9492b4870aa6d42d"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html#a499f87fd833203ef9492b4870aa6d42d">data_structures::trie::search</a></div><div class="ttdeci">bool search(const std::string &amp;str, int index)</div><div class="ttdef"><b>Definition</b> <a href="#l00107">trie_tree.cpp:107</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a4bfac4be6ed1a34c7159eddb42469191"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html#a4bfac4be6ed1a34c7159eddb42469191">data_structures::trie::NUM_CHARS</a></div><div class="ttdeci">static constexpr uint8_t NUM_CHARS</div><div class="ttdoc">Number of alphabets.</div><div class="ttdef"><b>Definition</b> <a href="#l00027">trie_tree.cpp:27</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a4cb0f775b5a4bc14a6d39b5c93883eb6"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html#a4cb0f775b5a4bc14a6d39b5c93883eb6">data_structures::trie::isEndofWord</a></div><div class="ttdeci">bool isEndofWord</div><div class="ttdoc">identifier if a node is terminal node</div><div class="ttdef"><b>Definition</b> <a href="#l00030">trie_tree.cpp:30</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html">data_structures::trie</a></div><div class="ttdoc">Trie implementation for small-case English alphabets a-z</div><div class="ttdef"><b>Definition</b> <a href="#l00024">trie_tree.cpp:24</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a0ab94bc6417e3f59fab33cea5b64d546"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html#a0ab94bc6417e3f59fab33cea5b64d546">data_structures::trie::insert</a></div><div class="ttdeci">void insert(const std::string &amp;str)</div><div class="ttdef"><b>Definition</b> <a href="#l00076">trie_tree.cpp:76</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a362dd78748a1f01ab019e55fd6098a8b"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html#a362dd78748a1f01ab019e55fd6098a8b">data_structures::trie::arr</a></div><div class="ttdeci">std::array&lt; std::shared_ptr&lt; trie &gt;, NUM_CHARS&lt;&lt; 1 &gt; arr</div><div class="ttdoc">Recursive tree nodes as an array of shared-pointers.</div><div class="ttdef"><b>Definition</b> <a href="#l00028">trie_tree.cpp:28</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a499f87fd833203ef9492b4870aa6d42d"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html#a499f87fd833203ef9492b4870aa6d42d">data_structures::trie::search</a></div><div class="ttdeci">bool search(const std::string &amp;str, int index)</div><div class="ttdef"><b>Definition</b> <a href="#l00106">trie_tree.cpp:106</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a4bfac4be6ed1a34c7159eddb42469191"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html#a4bfac4be6ed1a34c7159eddb42469191">data_structures::trie::NUM_CHARS</a></div><div class="ttdeci">static constexpr uint8_t NUM_CHARS</div><div class="ttdoc">Number of alphabets.</div><div class="ttdef"><b>Definition</b> <a href="#l00026">trie_tree.cpp:26</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a4cb0f775b5a4bc14a6d39b5c93883eb6"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html#a4cb0f775b5a4bc14a6d39b5c93883eb6">data_structures::trie::isEndofWord</a></div><div class="ttdeci">bool isEndofWord</div><div class="ttdoc">identifier if a node is terminal node</div><div class="ttdef"><b>Definition</b> <a href="#l00029">trie_tree.cpp:29</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a87d8bf99aea936f9381141753f1e90a8"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html#a87d8bf99aea936f9381141753f1e90a8">data_structures::trie::trie</a></div><div class="ttdeci">trie()=default</div><div class="ttdoc">Class default constructor.</div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a961eb5d576d2420f2036009154397c63"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html#a961eb5d576d2420f2036009154397c63">data_structures::trie::search</a></div><div class="ttdeci">bool search(const std::shared_ptr&lt; trie &gt; &amp;root, const std::string &amp;str, int index)</div><div class="ttdef"><b>Definition</b> <a href="#l00056">trie_tree.cpp:56</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_aab373beb3f618b90922528c68797d988"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html#aab373beb3f618b90922528c68797d988">data_structures::trie::char_to_int</a></div><div class="ttdeci">uint8_t char_to_int(const char &amp;ch) const</div><div class="ttdoc">Convert a character to integer for indexing.</div><div class="ttdef"><b>Definition</b> <a href="#l00038">trie_tree.cpp:38</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_aeac27cfd397d2dd3f2f519efffafeeab"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html#aeac27cfd397d2dd3f2f519efffafeeab">data_structures::trie::deleteString</a></div><div class="ttdeci">bool deleteString(const std::string &amp;str, int index)</div><div class="ttdef"><b>Definition</b> <a href="#l00134">trie_tree.cpp:134</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_a961eb5d576d2420f2036009154397c63"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html#a961eb5d576d2420f2036009154397c63">data_structures::trie::search</a></div><div class="ttdeci">bool search(const std::shared_ptr&lt; trie &gt; &amp;root, const std::string &amp;str, int index)</div><div class="ttdef"><b>Definition</b> <a href="#l00055">trie_tree.cpp:55</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_aab373beb3f618b90922528c68797d988"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html#aab373beb3f618b90922528c68797d988">data_structures::trie::char_to_int</a></div><div class="ttdeci">uint8_t char_to_int(const char &amp;ch) const</div><div class="ttdoc">Convert a character to integer for indexing.</div><div class="ttdef"><b>Definition</b> <a href="#l00037">trie_tree.cpp:37</a></div></div>
<div class="ttc" id="aclassdata__structures_1_1trie_html_aeac27cfd397d2dd3f2f519efffafeeab"><div class="ttname"><a href="../../d0/d3e/classdata__structures_1_1trie.html#aeac27cfd397d2dd3f2f519efffafeeab">data_structures::trie::deleteString</a></div><div class="ttdeci">bool deleteString(const std::string &amp;str, int index)</div><div class="ttdef"><b>Definition</b> <a href="#l00133">trie_tree.cpp:133</a></div></div>
<div class="ttc" id="anamespacedata__structures_html"><div class="ttname"><a href="../../d5/d3c/namespacedata__structures.html">data_structures</a></div><div class="ttdoc">for IO operations</div></div>
<div class="ttc" id="anamespacesearch_html"><div class="ttname"><a href="../../d9/dca/namespacesearch.html">search</a></div><div class="ttdoc">for std::assert</div><div class="ttdef"><b>Definition</b> <a href="../../df/dd5/binary__search_8cpp_source.html#l00047">binary_search.cpp:47</a></div></div>
<div class="ttc" id="atrie__tree_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../d7/d83/trie__tree_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Testing function.</div><div class="ttdef"><b>Definition</b> <a href="#l00178">trie_tree.cpp:178</a></div></div>
<div class="ttc" id="atrie__tree_8cpp_html_ae66f6b31b5ad750f1fe042a706a4e3d4"><div class="ttname"><a href="../../d7/d83/trie__tree_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a></div><div class="ttdeci">int main()</div><div class="ttdoc">Main function.</div><div class="ttdef"><b>Definition</b> <a href="#l00205">trie_tree.cpp:205</a></div></div>
<div class="ttc" id="atrie__tree_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../d7/d83/trie__tree_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Testing function.</div><div class="ttdef"><b>Definition</b> <a href="#l00177">trie_tree.cpp:177</a></div></div>
<div class="ttc" id="atrie__tree_8cpp_html_ae66f6b31b5ad750f1fe042a706a4e3d4"><div class="ttname"><a href="../../d7/d83/trie__tree_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a></div><div class="ttdeci">int main()</div><div class="ttdoc">Main function.</div><div class="ttdef"><b>Definition</b> <a href="#l00204">trie_tree.cpp:204</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->

View File

@@ -1,9 +1,7 @@
<map id="backtracking/graph_coloring.cpp" name="backtracking/graph_coloring.cpp">
<area shape="rect" id="Node000001" title="prints the assigned colors using Graph Coloring algorithm" alt="" coords="50,5,182,46"/>
<area shape="rect" id="Node000001" title="prints the assigned colors using Graph Coloring algorithm" alt="" coords="7,5,139,46"/>
<area shape="rect" id="Node000002" title=" " alt="" coords="5,94,56,120"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="97,48,57,85,53,81,93,44"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="65,48,47,81,42,79,60,45"/>
<area shape="rect" id="Node000003" title=" " alt="" coords="80,94,152,120"/>
<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="118,46,118,78,113,78,113,46"/>
<area shape="rect" id="Node000004" title=" " alt="" coords="175,94,232,120"/>
<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="139,44,181,81,177,85,136,48"/>
<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="86,45,104,79,100,81,81,48"/>
</map>

View File

@@ -1 +1 @@
6b4447c47cb5fa9b64b269a138599c1e
c54670a67c3cf0b4b7dd0f8523d86bcd

View File

@@ -4,8 +4,8 @@
<!-- Generated by graphviz version 12.2.1 (20241206.2353)
-->
<!-- Title: backtracking/graph_coloring.cpp Pages: 1 -->
<svg width="178pt" height="94pt"
viewBox="0.00 0.00 178.38 93.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="118pt" height="94pt"
viewBox="0.00 0.00 117.62 93.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
@@ -23,9 +23,9 @@
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="prints the assigned colors using Graph Coloring algorithm">
<polygon fill="#999999" stroke="#666666" points="132.12,-85.75 33.62,-85.75 33.62,-55.25 132.12,-55.25 132.12,-85.75"/>
<text text-anchor="start" x="41.62" y="-72.25" font-family="Helvetica,sans-Serif" font-size="10.00">backtracking/graph</text>
<text text-anchor="middle" x="82.88" y="-61" font-family="Helvetica,sans-Serif" font-size="10.00">_coloring.cpp</text>
<polygon fill="#999999" stroke="#666666" points="100.12,-85.75 1.62,-85.75 1.62,-55.25 100.12,-55.25 100.12,-85.75"/>
<text text-anchor="start" x="9.62" y="-72.25" font-family="Helvetica,sans-Serif" font-size="10.00">backtracking/graph</text>
<text text-anchor="middle" x="50.88" y="-61" font-family="Helvetica,sans-Serif" font-size="10.00">_coloring.cpp</text>
</a>
</g>
</g>
@@ -42,8 +42,8 @@
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M67.05,-54.95C57.97,-46.59 46.51,-36.05 37.06,-27.35"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="39.58,-24.92 29.86,-20.73 34.85,-30.07 39.58,-24.92"/>
<path fill="none" stroke="#63b8ff" d="M42.96,-54.95C38.84,-47.36 33.75,-37.99 29.31,-29.82"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="32.38,-28.15 24.53,-21.03 26.23,-31.49 32.38,-28.15"/>
</a>
</g>
</g>
@@ -60,26 +60,8 @@
<g id="edge2_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M82.88,-54.95C82.88,-47.71 82.88,-38.84 82.88,-30.94"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="86.38,-31.21 82.88,-21.21 79.38,-31.21 86.38,-31.21"/>
</a>
</g>
</g>
<!-- Node4 -->
<g id="Node000004" class="node">
<title>Node4</title>
<g id="a_Node000004"><a xlink:title=" ">
<polygon fill="#e0e0e0" stroke="#999999" points="170.38,-19.25 127.38,-19.25 127.38,0 170.38,0 170.38,-19.25"/>
<text text-anchor="middle" x="148.88" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">vector</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge3_Node000001_Node000004" class="edge">
<title>Node1&#45;&gt;Node4</title>
<g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M99.19,-54.95C108.56,-46.59 120.37,-36.05 130.13,-27.35"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="132.44,-29.98 137.57,-20.71 127.78,-24.75 132.44,-29.98"/>
<path fill="none" stroke="#63b8ff" d="M58.79,-54.95C62.91,-47.36 68,-37.99 72.44,-29.82"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="75.52,-31.49 77.22,-21.03 69.37,-28.15 75.52,-31.49"/>
</a>
</g>
</g>

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -4,17 +4,17 @@
<!-- Generated by graphviz version 12.2.1 (20241206.2353)
-->
<!-- Title: backtracking/graph_coloring.cpp Pages: 1 -->
<svg width="178pt" height="94pt"
viewBox="0.00 0.00 178.38 93.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="118pt" height="94pt"
viewBox="0.00 0.00 117.62 93.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 89.75)">
<title>backtracking/graph_coloring.cpp</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="prints the assigned colors using Graph Coloring algorithm">
<polygon fill="#999999" stroke="#666666" points="132.12,-85.75 33.62,-85.75 33.62,-55.25 132.12,-55.25 132.12,-85.75"/>
<text text-anchor="start" x="41.62" y="-72.25" font-family="Helvetica,sans-Serif" font-size="10.00">backtracking/graph</text>
<text text-anchor="middle" x="82.88" y="-61" font-family="Helvetica,sans-Serif" font-size="10.00">_coloring.cpp</text>
<polygon fill="#999999" stroke="#666666" points="100.12,-85.75 1.62,-85.75 1.62,-55.25 100.12,-55.25 100.12,-85.75"/>
<text text-anchor="start" x="9.62" y="-72.25" font-family="Helvetica,sans-Serif" font-size="10.00">backtracking/graph</text>
<text text-anchor="middle" x="50.88" y="-61" font-family="Helvetica,sans-Serif" font-size="10.00">_coloring.cpp</text>
</a>
</g>
</g>
@@ -31,8 +31,8 @@
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M67.05,-54.95C57.97,-46.59 46.51,-36.05 37.06,-27.35"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="39.58,-24.92 29.86,-20.73 34.85,-30.07 39.58,-24.92"/>
<path fill="none" stroke="#63b8ff" d="M42.96,-54.95C38.84,-47.36 33.75,-37.99 29.31,-29.82"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="32.38,-28.15 24.53,-21.03 26.23,-31.49 32.38,-28.15"/>
</a>
</g>
</g>
@@ -49,26 +49,8 @@
<g id="edge2_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M82.88,-54.95C82.88,-47.71 82.88,-38.84 82.88,-30.94"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="86.38,-31.21 82.88,-21.21 79.38,-31.21 86.38,-31.21"/>
</a>
</g>
</g>
<!-- Node4 -->
<g id="Node000004" class="node">
<title>Node4</title>
<g id="a_Node000004"><a xlink:title=" ">
<polygon fill="#e0e0e0" stroke="#999999" points="170.38,-19.25 127.38,-19.25 127.38,0 170.38,0 170.38,-19.25"/>
<text text-anchor="middle" x="148.88" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">vector</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge3_Node000001_Node000004" class="edge">
<title>Node1&#45;&gt;Node4</title>
<g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M99.19,-54.95C108.56,-46.59 120.37,-36.05 130.13,-27.35"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="132.44,-29.98 137.57,-20.71 127.78,-24.75 132.44,-29.98"/>
<path fill="none" stroke="#63b8ff" d="M58.79,-54.95C62.91,-47.36 68,-37.99 72.44,-29.82"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="75.52,-31.49 77.22,-21.03 69.37,-28.15 75.52,-31.49"/>
</a>
</g>
</g>

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -133,11 +133,10 @@ $(function(){initNavTree('da/dd3/karatsuba__algorithm__for__fast__multiplication
<div class="textblock"><code>#include &lt;cassert&gt;</code><br />
<code>#include &lt;cstring&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for karatsuba_algorithm_for_fast_multiplication.cpp:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d0/d2c/karatsuba__algorithm__for__fast__multiplication_8cpp__incl.svg" width="336" height="140"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d0/d2c/karatsuba__algorithm__for__fast__multiplication_8cpp__incl.svg" width="255" height="140"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
<p><a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html">Go to the source code of this file.</a></p>
@@ -145,7 +144,7 @@ Include dependency graph for karatsuba_algorithm_for_fast_multiplication.cpp:</d
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/dba/namespacedivide__and__conquer.html">divide_and_conquer</a></td></tr>
<tr class="memdesc:dd/dba/namespacedivide__and__conquer"><td class="mdescLeft">&#160;</td><td class="mdescRight">for std::vector <br /></td></tr>
<tr class="memdesc:dd/dba/namespacedivide__and__conquer"><td class="mdescLeft">&#160;</td><td class="mdescRight">for IO operations <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a></td></tr>
<tr class="memdesc:de/d41/namespacekaratsuba__algorithm"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions for the <a href="https://en.wikipedia.org/wiki/Karatsuba_algorithm" target="_blank">Karatsuba algorithm for fast multiplication</a> implementation. <br /></td></tr>
@@ -206,46 +205,46 @@ Functions</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the sum binary string </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00037">37</a> of file <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html">karatsuba_algorithm_for_fast_multiplication.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 37</span> {</div>
<div class="line"><span class="lineno"> 38</span> std::string result; <span class="comment">// to store the resulting sum bits</span></div>
<div class="line"><span class="lineno"> 39</span> </div>
<div class="line"><span class="lineno"> 40</span> <span class="comment">// make the string lengths equal</span></div>
<div class="line"><span class="lineno"> 41</span> int64_t len1 = first.size();</div>
<div class="line"><span class="lineno"> 42</span> int64_t len2 = second.size();</div>
<div class="line"><span class="lineno"> 43</span> std::string zero = <span class="stringliteral">&quot;0&quot;</span>;</div>
<div class="line"><span class="lineno"> 44</span> <span class="keywordflow">if</span> (len1 &lt; len2) {</div>
<div class="line"><span class="lineno"> 45</span> <span class="keywordflow">for</span> (int64_t i = 0; i &lt; len2 - len1; i++) {</div>
<div class="line"><span class="lineno"> 46</span> zero += first;</div>
<div class="line"><span class="lineno"> 47</span> first = zero;</div>
<div class="line"><span class="lineno"> 48</span> zero = <span class="stringliteral">&quot;0&quot;</span>; <span class="comment">// Prevents CI from failing</span></div>
<div class="line"><span class="lineno"> 49</span> }</div>
<div class="line"><span class="lineno"> 50</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (len1 &gt; len2) {</div>
<div class="line"><span class="lineno"> 51</span> <span class="keywordflow">for</span> (int64_t i = 0; i &lt; len1 - len2; i++) {</div>
<div class="line"><span class="lineno"> 52</span> zero += second;</div>
<div class="line"><span class="lineno"> 53</span> second = zero;</div>
<div class="line"><span class="lineno"> 54</span> zero = <span class="stringliteral">&quot;0&quot;</span>; <span class="comment">// Prevents CI from failing</span></div>
<div class="line"><span class="lineno"> 55</span> }</div>
<div class="line"><span class="lineno"> 56</span> }</div>
<div class="line"><span class="lineno"> 57</span> </div>
<div class="line"><span class="lineno"> 58</span> int64_t length = std::max(len1, len2);</div>
<div class="line"><span class="lineno"> 59</span> int64_t carry = 0;</div>
<div class="line"><span class="lineno"> 60</span> <span class="keywordflow">for</span> (int64_t i = length - 1; i &gt;= 0; i--) {</div>
<div class="line"><span class="lineno"> 61</span> int64_t firstBit = first.at(i) - <span class="charliteral">&#39;0&#39;</span>;</div>
<div class="line"><span class="lineno"> 62</span> int64_t secondBit = second.at(i) - <span class="charliteral">&#39;0&#39;</span>;</div>
<div class="line"><span class="lineno"> 63</span> </div>
<div class="line"><span class="lineno"> 64</span> int64_t <a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35">sum</a> = (char(firstBit ^ secondBit ^ carry)) + <span class="charliteral">&#39;0&#39;</span>; <span class="comment">// sum of 3 bits</span></div>
<div class="line"><span class="lineno"> 65</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>.insert(<a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>.begin(), sum);</div>
<div class="line"><span class="lineno"> 66</span> </div>
<div class="line"><span class="lineno"> 67</span> carry = char((firstBit &amp; secondBit) | (secondBit &amp; carry) |</div>
<div class="line"><span class="lineno"> 68</span> (firstBit &amp; carry)); <span class="comment">// sum of 3 bits</span></div>
<div class="line"><span class="lineno"> 69</span> }</div>
<div class="line"><span class="lineno"> 70</span> </div>
<div class="line"><span class="lineno"> 71</span> <span class="keywordflow">if</span> (carry) {</div>
<div class="line"><span class="lineno"> 72</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>.insert(<a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>.begin(), <span class="charliteral">&#39;1&#39;</span>); <span class="comment">// adding 1 incase of overflow</span></div>
<div class="line"><span class="lineno"> 73</span> }</div>
<div class="line"><span class="lineno"> 74</span> <span class="keywordflow">return</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>;</div>
<div class="line"><span class="lineno"> 75</span>}</div>
<p class="definition">Definition at line <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00036">36</a> of file <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html">karatsuba_algorithm_for_fast_multiplication.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 36</span> {</div>
<div class="line"><span class="lineno"> 37</span> std::string result; <span class="comment">// to store the resulting sum bits</span></div>
<div class="line"><span class="lineno"> 38</span> </div>
<div class="line"><span class="lineno"> 39</span> <span class="comment">// make the string lengths equal</span></div>
<div class="line"><span class="lineno"> 40</span> int64_t len1 = first.size();</div>
<div class="line"><span class="lineno"> 41</span> int64_t len2 = second.size();</div>
<div class="line"><span class="lineno"> 42</span> std::string zero = <span class="stringliteral">&quot;0&quot;</span>;</div>
<div class="line"><span class="lineno"> 43</span> <span class="keywordflow">if</span> (len1 &lt; len2) {</div>
<div class="line"><span class="lineno"> 44</span> <span class="keywordflow">for</span> (int64_t i = 0; i &lt; len2 - len1; i++) {</div>
<div class="line"><span class="lineno"> 45</span> zero += first;</div>
<div class="line"><span class="lineno"> 46</span> first = zero;</div>
<div class="line"><span class="lineno"> 47</span> zero = <span class="stringliteral">&quot;0&quot;</span>; <span class="comment">// Prevents CI from failing</span></div>
<div class="line"><span class="lineno"> 48</span> }</div>
<div class="line"><span class="lineno"> 49</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (len1 &gt; len2) {</div>
<div class="line"><span class="lineno"> 50</span> <span class="keywordflow">for</span> (int64_t i = 0; i &lt; len1 - len2; i++) {</div>
<div class="line"><span class="lineno"> 51</span> zero += second;</div>
<div class="line"><span class="lineno"> 52</span> second = zero;</div>
<div class="line"><span class="lineno"> 53</span> zero = <span class="stringliteral">&quot;0&quot;</span>; <span class="comment">// Prevents CI from failing</span></div>
<div class="line"><span class="lineno"> 54</span> }</div>
<div class="line"><span class="lineno"> 55</span> }</div>
<div class="line"><span class="lineno"> 56</span> </div>
<div class="line"><span class="lineno"> 57</span> int64_t length = std::max(len1, len2);</div>
<div class="line"><span class="lineno"> 58</span> int64_t carry = 0;</div>
<div class="line"><span class="lineno"> 59</span> <span class="keywordflow">for</span> (int64_t i = length - 1; i &gt;= 0; i--) {</div>
<div class="line"><span class="lineno"> 60</span> int64_t firstBit = first.at(i) - <span class="charliteral">&#39;0&#39;</span>;</div>
<div class="line"><span class="lineno"> 61</span> int64_t secondBit = second.at(i) - <span class="charliteral">&#39;0&#39;</span>;</div>
<div class="line"><span class="lineno"> 62</span> </div>
<div class="line"><span class="lineno"> 63</span> int64_t <a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35">sum</a> = (char(firstBit ^ secondBit ^ carry)) + <span class="charliteral">&#39;0&#39;</span>; <span class="comment">// sum of 3 bits</span></div>
<div class="line"><span class="lineno"> 64</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>.insert(<a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>.begin(), sum);</div>
<div class="line"><span class="lineno"> 65</span> </div>
<div class="line"><span class="lineno"> 66</span> carry = char((firstBit &amp; secondBit) | (secondBit &amp; carry) |</div>
<div class="line"><span class="lineno"> 67</span> (firstBit &amp; carry)); <span class="comment">// sum of 3 bits</span></div>
<div class="line"><span class="lineno"> 68</span> }</div>
<div class="line"><span class="lineno"> 69</span> </div>
<div class="line"><span class="lineno"> 70</span> <span class="keywordflow">if</span> (carry) {</div>
<div class="line"><span class="lineno"> 71</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>.insert(<a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>.begin(), <span class="charliteral">&#39;1&#39;</span>); <span class="comment">// adding 1 incase of overflow</span></div>
<div class="line"><span class="lineno"> 72</span> }</div>
<div class="line"><span class="lineno"> 73</span> <span class="keywordflow">return</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>;</div>
<div class="line"><span class="lineno"> 74</span>}</div>
<div class="ttc" id="afibonacci__sum_8cpp_html_aadb40ac4c74a7efc0680b83eeee138aa"><div class="ttname"><a href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">math::fibonacci_sum::result</a></div><div class="ttdeci">uint64_t result(uint64_t n)</div><div class="ttdef"><b>Definition</b> <a href="../../de/dc3/fibonacci__sum_8cpp_source.html#l00077">fibonacci_sum.cpp:77</a></div></div>
<div class="ttc" id="anamespacemachine__learning_html_a6f1c98c016ad34ff3d9f39372161bd35"><div class="ttname"><a href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35">machine_learning::sum</a></div><div class="ttdeci">T sum(const std::vector&lt; std::valarray&lt; T &gt; &gt; &amp;A)</div><div class="ttdef"><b>Definition</b> <a href="../../d8/d95/vector__ops_8hpp_source.html#l00232">vector_ops.hpp:232</a></div></div>
</div><!-- fragment -->
@@ -280,41 +279,41 @@ Functions</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the product number value </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00112">112</a> of file <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html">karatsuba_algorithm_for_fast_multiplication.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 112</span> {</div>
<div class="line"><span class="lineno"> 113</span> int64_t len1 = str1.size();</div>
<div class="line"><span class="lineno"> 114</span> int64_t len2 = str2.size();</div>
<div class="line"><span class="lineno"> 115</span> int64_t n = std::max(len1, len2);</div>
<div class="line"><span class="lineno"> 116</span> </div>
<div class="line"><span class="lineno"> 117</span> <span class="keywordflow">if</span> (n == 0) {</div>
<div class="line"><span class="lineno"> 118</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><span class="lineno"> 119</span> }</div>
<div class="line"><span class="lineno"> 120</span> <span class="keywordflow">if</span> (n == 1) {</div>
<div class="line"><span class="lineno"> 121</span> <span class="keywordflow">return</span> (str1[0] - <span class="charliteral">&#39;0&#39;</span>) * (str2[0] - <span class="charliteral">&#39;0&#39;</span>);</div>
<div class="line"><span class="lineno"> 122</span> }</div>
<div class="line"><span class="lineno"> 123</span> </div>
<div class="line"><span class="lineno"> 124</span> int64_t fh = n / 2; <span class="comment">// first half of string</span></div>
<div class="line"><span class="lineno"> 125</span> int64_t sh = n - fh; <span class="comment">// second half of string</span></div>
<div class="line"><span class="lineno"> 126</span> </div>
<div class="line"><span class="lineno"> 127</span> std::string Xl = <a class="code hl_function" href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str1, 0, fh, n); <span class="comment">// first half of first string</span></div>
<div class="line"><span class="lineno"> 128</span> std::string Xr = <a class="code hl_function" href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str1, fh, sh, n); <span class="comment">// second half of first string</span></div>
<div class="line"><span class="lineno"> 129</span> </div>
<div class="line"><span class="lineno"> 130</span> std::string Yl = <a class="code hl_function" href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str2, 0, fh, n); <span class="comment">// first half of second string</span></div>
<div class="line"><span class="lineno"> 131</span> std::string Yr = <a class="code hl_function" href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str2, fh, sh, n); <span class="comment">// second half of second string</span></div>
<div class="line"><span class="lineno"> 132</span> </div>
<div class="line"><span class="lineno"> 133</span> <span class="comment">// calculating the three products of inputs of size n/2 recursively</span></div>
<div class="line"><span class="lineno"> 134</span> int64_t product1 = <a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a>(Xl, Yl);</div>
<div class="line"><span class="lineno"> 135</span> int64_t product2 = <a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a>(Xr, Yr);</div>
<div class="line"><span class="lineno"> 136</span> int64_t product3 = <a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a>(</div>
<div class="line"><span class="lineno"> 137</span> <a class="code hl_function" href="#ad76f5cac3ef8dc034f6abb99b64c2b20">divide_and_conquer::karatsuba_algorithm::add_strings</a>(Xl, Xr),</div>
<div class="line"><span class="lineno"> 138</span> <a class="code hl_function" href="#ad76f5cac3ef8dc034f6abb99b64c2b20">divide_and_conquer::karatsuba_algorithm::add_strings</a>(Yl, Yr));</div>
<div class="line"><span class="lineno"> 139</span> </div>
<div class="line"><span class="lineno"> 140</span> <span class="keywordflow">return</span> product1 * (1 &lt;&lt; (2 * sh)) +</div>
<div class="line"><span class="lineno"> 141</span> (product3 - product1 - product2) * (1 &lt;&lt; sh) +</div>
<div class="line"><span class="lineno"> 142</span> product2; <span class="comment">// combining the three products to get the final result.</span></div>
<div class="line"><span class="lineno"> 143</span>}</div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_aad9e3edfe156b59fc06a5585403fe0d6"><div class="ttname"><a href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a></div><div class="ttdeci">std::string safe_substr(const std::string &amp;str, int64_t x1, int64_t x2, int64_t n)</div><div class="ttdoc">Wrapper function for substr that considers leading zeros.</div><div class="ttdef"><b>Definition</b> <a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00086">karatsuba_algorithm_for_fast_multiplication.cpp:86</a></div></div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_ad76f5cac3ef8dc034f6abb99b64c2b20"><div class="ttname"><a href="#ad76f5cac3ef8dc034f6abb99b64c2b20">divide_and_conquer::karatsuba_algorithm::add_strings</a></div><div class="ttdeci">std::string add_strings(std::string first, std::string second)</div><div class="ttdoc">Binary addition.</div><div class="ttdef"><b>Definition</b> <a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00037">karatsuba_algorithm_for_fast_multiplication.cpp:37</a></div></div>
<p class="definition">Definition at line <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00111">111</a> of file <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html">karatsuba_algorithm_for_fast_multiplication.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 111</span> {</div>
<div class="line"><span class="lineno"> 112</span> int64_t len1 = str1.size();</div>
<div class="line"><span class="lineno"> 113</span> int64_t len2 = str2.size();</div>
<div class="line"><span class="lineno"> 114</span> int64_t n = std::max(len1, len2);</div>
<div class="line"><span class="lineno"> 115</span> </div>
<div class="line"><span class="lineno"> 116</span> <span class="keywordflow">if</span> (n == 0) {</div>
<div class="line"><span class="lineno"> 117</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><span class="lineno"> 118</span> }</div>
<div class="line"><span class="lineno"> 119</span> <span class="keywordflow">if</span> (n == 1) {</div>
<div class="line"><span class="lineno"> 120</span> <span class="keywordflow">return</span> (str1[0] - <span class="charliteral">&#39;0&#39;</span>) * (str2[0] - <span class="charliteral">&#39;0&#39;</span>);</div>
<div class="line"><span class="lineno"> 121</span> }</div>
<div class="line"><span class="lineno"> 122</span> </div>
<div class="line"><span class="lineno"> 123</span> int64_t fh = n / 2; <span class="comment">// first half of string</span></div>
<div class="line"><span class="lineno"> 124</span> int64_t sh = n - fh; <span class="comment">// second half of string</span></div>
<div class="line"><span class="lineno"> 125</span> </div>
<div class="line"><span class="lineno"> 126</span> std::string Xl = <a class="code hl_function" href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str1, 0, fh, n); <span class="comment">// first half of first string</span></div>
<div class="line"><span class="lineno"> 127</span> std::string Xr = <a class="code hl_function" href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str1, fh, sh, n); <span class="comment">// second half of first string</span></div>
<div class="line"><span class="lineno"> 128</span> </div>
<div class="line"><span class="lineno"> 129</span> std::string Yl = <a class="code hl_function" href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str2, 0, fh, n); <span class="comment">// first half of second string</span></div>
<div class="line"><span class="lineno"> 130</span> std::string Yr = <a class="code hl_function" href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str2, fh, sh, n); <span class="comment">// second half of second string</span></div>
<div class="line"><span class="lineno"> 131</span> </div>
<div class="line"><span class="lineno"> 132</span> <span class="comment">// calculating the three products of inputs of size n/2 recursively</span></div>
<div class="line"><span class="lineno"> 133</span> int64_t product1 = <a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a>(Xl, Yl);</div>
<div class="line"><span class="lineno"> 134</span> int64_t product2 = <a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a>(Xr, Yr);</div>
<div class="line"><span class="lineno"> 135</span> int64_t product3 = <a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a>(</div>
<div class="line"><span class="lineno"> 136</span> <a class="code hl_function" href="#ad76f5cac3ef8dc034f6abb99b64c2b20">divide_and_conquer::karatsuba_algorithm::add_strings</a>(Xl, Xr),</div>
<div class="line"><span class="lineno"> 137</span> <a class="code hl_function" href="#ad76f5cac3ef8dc034f6abb99b64c2b20">divide_and_conquer::karatsuba_algorithm::add_strings</a>(Yl, Yr));</div>
<div class="line"><span class="lineno"> 138</span> </div>
<div class="line"><span class="lineno"> 139</span> <span class="keywordflow">return</span> product1 * (1 &lt;&lt; (2 * sh)) +</div>
<div class="line"><span class="lineno"> 140</span> (product3 - product1 - product2) * (1 &lt;&lt; sh) +</div>
<div class="line"><span class="lineno"> 141</span> product2; <span class="comment">// combining the three products to get the final result.</span></div>
<div class="line"><span class="lineno"> 142</span>}</div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_aad9e3edfe156b59fc06a5585403fe0d6"><div class="ttname"><a href="#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a></div><div class="ttdeci">std::string safe_substr(const std::string &amp;str, int64_t x1, int64_t x2, int64_t n)</div><div class="ttdoc">Wrapper function for substr that considers leading zeros.</div><div class="ttdef"><b>Definition</b> <a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00085">karatsuba_algorithm_for_fast_multiplication.cpp:85</a></div></div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_ad76f5cac3ef8dc034f6abb99b64c2b20"><div class="ttname"><a href="#ad76f5cac3ef8dc034f6abb99b64c2b20">divide_and_conquer::karatsuba_algorithm::add_strings</a></div><div class="ttdeci">std::string add_strings(std::string first, std::string second)</div><div class="ttdoc">Binary addition.</div><div class="ttdef"><b>Definition</b> <a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00036">karatsuba_algorithm_for_fast_multiplication.cpp:36</a></div></div>
<div class="ttc" id="anamespacekaratsuba__algorithm_html"><div class="ttname"><a href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a></div><div class="ttdoc">Functions for the Karatsuba algorithm for fast multiplication implementation.</div></div>
</div><!-- fragment -->
</div>
@@ -337,12 +336,12 @@ Functions</h2></td></tr>
<p>Main function. </p>
<dl class="section return"><dt>Returns</dt><dd>0 on exit </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00181">181</a> of file <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html">karatsuba_algorithm_for_fast_multiplication.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 181</span> {</div>
<div class="line"><span class="lineno"> 182</span> <a class="code hl_function" href="#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// run self-test implementations</span></div>
<div class="line"><span class="lineno"> 183</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><span class="lineno"> 184</span>}</div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Self-test implementations.</div><div class="ttdef"><b>Definition</b> <a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00151">karatsuba_algorithm_for_fast_multiplication.cpp:151</a></div></div>
<p class="definition">Definition at line <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00180">180</a> of file <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html">karatsuba_algorithm_for_fast_multiplication.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 180</span> {</div>
<div class="line"><span class="lineno"> 181</span> <a class="code hl_function" href="#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// run self-test implementations</span></div>
<div class="line"><span class="lineno"> 182</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><span class="lineno"> 183</span>}</div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Self-test implementations.</div><div class="ttdef"><b>Definition</b> <a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00150">karatsuba_algorithm_for_fast_multiplication.cpp:150</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -389,25 +388,25 @@ Functions</h2></td></tr>
<dd>
"0" if substring spans to leading zeros only </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00086">86</a> of file <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html">karatsuba_algorithm_for_fast_multiplication.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 86</span> {</div>
<div class="line"><span class="lineno"> 87</span> int64_t len = str.size();</div>
<div class="line"><span class="lineno"> 88</span> </div>
<div class="line"><span class="lineno"> 89</span> <span class="keywordflow">if</span> (len &gt;= n) {</div>
<div class="line"><span class="lineno"> 90</span> <span class="keywordflow">return</span> str.substr(x1, x2);</div>
<div class="line"><span class="lineno"> 91</span> }</div>
<div class="line"><span class="lineno"> 92</span> </div>
<div class="line"><span class="lineno"> 93</span> int64_t y1 = x1 - (n - len); <span class="comment">// index in str of first char of substring of &quot;whole&quot; string</span></div>
<div class="line"><span class="lineno"> 94</span> int64_t y2 = (x1 + x2 - 1) - (n - len); <span class="comment">// index in str of last char of substring of &quot;whole&quot; string</span></div>
<div class="line"><span class="lineno"> 95</span> </div>
<div class="line"><span class="lineno"> 96</span> <span class="keywordflow">if</span> (y2 &lt; 0) {</div>
<div class="line"><span class="lineno"> 97</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;0&quot;</span>;</div>
<div class="line"><span class="lineno"> 98</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (y1 &lt; 0) {</div>
<div class="line"><span class="lineno"> 99</span> <span class="keywordflow">return</span> str.substr(0, y2 + 1);</div>
<div class="line"><span class="lineno"> 100</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><span class="lineno"> 101</span> <span class="keywordflow">return</span> str.substr(y1, x2);</div>
<div class="line"><span class="lineno"> 102</span> }</div>
<div class="line"><span class="lineno"> 103</span>}</div>
<p class="definition">Definition at line <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00085">85</a> of file <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html">karatsuba_algorithm_for_fast_multiplication.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 85</span> {</div>
<div class="line"><span class="lineno"> 86</span> int64_t len = str.size();</div>
<div class="line"><span class="lineno"> 87</span> </div>
<div class="line"><span class="lineno"> 88</span> <span class="keywordflow">if</span> (len &gt;= n) {</div>
<div class="line"><span class="lineno"> 89</span> <span class="keywordflow">return</span> str.substr(x1, x2);</div>
<div class="line"><span class="lineno"> 90</span> }</div>
<div class="line"><span class="lineno"> 91</span> </div>
<div class="line"><span class="lineno"> 92</span> int64_t y1 = x1 - (n - len); <span class="comment">// index in str of first char of substring of &quot;whole&quot; string</span></div>
<div class="line"><span class="lineno"> 93</span> int64_t y2 = (x1 + x2 - 1) - (n - len); <span class="comment">// index in str of last char of substring of &quot;whole&quot; string</span></div>
<div class="line"><span class="lineno"> 94</span> </div>
<div class="line"><span class="lineno"> 95</span> <span class="keywordflow">if</span> (y2 &lt; 0) {</div>
<div class="line"><span class="lineno"> 96</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;0&quot;</span>;</div>
<div class="line"><span class="lineno"> 97</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (y1 &lt; 0) {</div>
<div class="line"><span class="lineno"> 98</span> <span class="keywordflow">return</span> str.substr(0, y2 + 1);</div>
<div class="line"><span class="lineno"> 99</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><span class="lineno"> 100</span> <span class="keywordflow">return</span> str.substr(y1, x2);</div>
<div class="line"><span class="lineno"> 101</span> }</div>
<div class="line"><span class="lineno"> 102</span>}</div>
</div><!-- fragment -->
</div>
</div>
@@ -437,33 +436,33 @@ Functions</h2></td></tr>
<p>Self-test implementations. </p>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00151">151</a> of file <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html">karatsuba_algorithm_for_fast_multiplication.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 151</span> {</div>
<div class="line"><span class="lineno"> 152</span> <span class="comment">// 1st test</span></div>
<div class="line"><span class="lineno"> 153</span> std::string s11 = <span class="stringliteral">&quot;1&quot;</span>; <span class="comment">// 1</span></div>
<div class="line"><span class="lineno"> 154</span> std::string s12 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><span class="lineno"> 155</span> std::cout &lt;&lt; <span class="stringliteral">&quot;1st test... &quot;</span>;</div>
<div class="line"><span class="lineno"> 156</span> assert(<a class="code hl_function" href="#a7a890d2f26855ada3b9f1d43aec70a86">divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</a>(</div>
<div class="line"><span class="lineno"> 157</span> s11, s12) == 10);</div>
<div class="line"><span class="lineno"> 158</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 159</span> </div>
<div class="line"><span class="lineno"> 160</span> <span class="comment">// 2nd test</span></div>
<div class="line"><span class="lineno"> 161</span> std::string s21 = <span class="stringliteral">&quot;11&quot;</span>; <span class="comment">// 3</span></div>
<div class="line"><span class="lineno"> 162</span> std::string s22 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><span class="lineno"> 163</span> std::cout &lt;&lt; <span class="stringliteral">&quot;2nd test... &quot;</span>;</div>
<div class="line"><span class="lineno"> 164</span> assert(<a class="code hl_function" href="#a7a890d2f26855ada3b9f1d43aec70a86">divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</a>(</div>
<div class="line"><span class="lineno"> 165</span> s21, s22) == 30);</div>
<div class="line"><span class="lineno"> 166</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 167</span> </div>
<div class="line"><span class="lineno"> 168</span> <span class="comment">// 3rd test</span></div>
<div class="line"><span class="lineno"> 169</span> std::string s31 = <span class="stringliteral">&quot;110&quot;</span>; <span class="comment">// 6</span></div>
<div class="line"><span class="lineno"> 170</span> std::string s32 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><span class="lineno"> 171</span> std::cout &lt;&lt; <span class="stringliteral">&quot;3rd test... &quot;</span>;</div>
<div class="line"><span class="lineno"> 172</span> assert(<a class="code hl_function" href="#a7a890d2f26855ada3b9f1d43aec70a86">divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</a>(</div>
<div class="line"><span class="lineno"> 173</span> s31, s32) == 60);</div>
<div class="line"><span class="lineno"> 174</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 175</span>}</div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_a7a890d2f26855ada3b9f1d43aec70a86"><div class="ttname"><a href="#a7a890d2f26855ada3b9f1d43aec70a86">divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</a></div><div class="ttdeci">int64_t karatsuba_algorithm(std::string str1, std::string str2)</div><div class="ttdoc">The main function implements Karatsuba&#39;s algorithm for fast multiplication.</div><div class="ttdef"><b>Definition</b> <a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00112">karatsuba_algorithm_for_fast_multiplication.cpp:112</a></div></div>
<p class="definition">Definition at line <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00150">150</a> of file <a class="el" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html">karatsuba_algorithm_for_fast_multiplication.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 150</span> {</div>
<div class="line"><span class="lineno"> 151</span> <span class="comment">// 1st test</span></div>
<div class="line"><span class="lineno"> 152</span> std::string s11 = <span class="stringliteral">&quot;1&quot;</span>; <span class="comment">// 1</span></div>
<div class="line"><span class="lineno"> 153</span> std::string s12 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><span class="lineno"> 154</span> std::cout &lt;&lt; <span class="stringliteral">&quot;1st test... &quot;</span>;</div>
<div class="line"><span class="lineno"> 155</span> assert(<a class="code hl_function" href="#a7a890d2f26855ada3b9f1d43aec70a86">divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</a>(</div>
<div class="line"><span class="lineno"> 156</span> s11, s12) == 10);</div>
<div class="line"><span class="lineno"> 157</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 158</span> </div>
<div class="line"><span class="lineno"> 159</span> <span class="comment">// 2nd test</span></div>
<div class="line"><span class="lineno"> 160</span> std::string s21 = <span class="stringliteral">&quot;11&quot;</span>; <span class="comment">// 3</span></div>
<div class="line"><span class="lineno"> 161</span> std::string s22 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><span class="lineno"> 162</span> std::cout &lt;&lt; <span class="stringliteral">&quot;2nd test... &quot;</span>;</div>
<div class="line"><span class="lineno"> 163</span> assert(<a class="code hl_function" href="#a7a890d2f26855ada3b9f1d43aec70a86">divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</a>(</div>
<div class="line"><span class="lineno"> 164</span> s21, s22) == 30);</div>
<div class="line"><span class="lineno"> 165</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 166</span> </div>
<div class="line"><span class="lineno"> 167</span> <span class="comment">// 3rd test</span></div>
<div class="line"><span class="lineno"> 168</span> std::string s31 = <span class="stringliteral">&quot;110&quot;</span>; <span class="comment">// 6</span></div>
<div class="line"><span class="lineno"> 169</span> std::string s32 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><span class="lineno"> 170</span> std::cout &lt;&lt; <span class="stringliteral">&quot;3rd test... &quot;</span>;</div>
<div class="line"><span class="lineno"> 171</span> assert(<a class="code hl_function" href="#a7a890d2f26855ada3b9f1d43aec70a86">divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</a>(</div>
<div class="line"><span class="lineno"> 172</span> s31, s32) == 60);</div>
<div class="line"><span class="lineno"> 173</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 174</span>}</div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_a7a890d2f26855ada3b9f1d43aec70a86"><div class="ttname"><a href="#a7a890d2f26855ada3b9f1d43aec70a86">divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</a></div><div class="ttdeci">int64_t karatsuba_algorithm(std::string str1, std::string str2)</div><div class="ttdoc">The main function implements Karatsuba&#39;s algorithm for fast multiplication.</div><div class="ttdef"><b>Definition</b> <a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp_source.html#l00111">karatsuba_algorithm_for_fast_multiplication.cpp:111</a></div></div>
</div><!-- fragment -->
</div>
</div>

View File

@@ -129,150 +129,149 @@ $(function(){initNavTree('da/dd3/karatsuba__algorithm__for__fast__multiplication
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &lt;cassert&gt;</span> </div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &lt;cstring&gt;</span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &lt;iostream&gt;</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include &lt;vector&gt;</span> </div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../dd/dba/namespacedivide__and__conquer.html">divide_and_conquer</a> {</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a> {</div>
<div class="foldopen" id="foldopen00037" data-start="{" data-end="}">
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"><a class="line" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ad76f5cac3ef8dc034f6abb99b64c2b20"> 37</a></span>std::string <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ad76f5cac3ef8dc034f6abb99b64c2b20">add_strings</a>(std::string first, std::string second) {</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> std::string result; <span class="comment">// to store the resulting sum bits</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// make the string lengths equal</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> int64_t len1 = first.size();</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> int64_t len2 = second.size();</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> std::string zero = <span class="stringliteral">&quot;0&quot;</span>;</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">if</span> (len1 &lt; len2) {</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keywordflow">for</span> (int64_t i = 0; i &lt; len2 - len1; i++) {</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> zero += first;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> first = zero;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> zero = <span class="stringliteral">&quot;0&quot;</span>; <span class="comment">// Prevents CI from failing</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> }</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (len1 &gt; len2) {</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keywordflow">for</span> (int64_t i = 0; i &lt; len1 - len2; i++) {</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> zero += second;</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> second = zero;</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> zero = <span class="stringliteral">&quot;0&quot;</span>; <span class="comment">// Prevents CI from failing</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> }</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> }</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> int64_t length = std::max(len1, len2);</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> int64_t carry = 0;</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="keywordflow">for</span> (int64_t i = length - 1; i &gt;= 0; i--) {</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> int64_t firstBit = first.at(i) - <span class="charliteral">&#39;0&#39;</span>;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> int64_t secondBit = second.at(i) - <span class="charliteral">&#39;0&#39;</span>;</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> int64_t sum = (char(firstBit ^ secondBit ^ carry)) + <span class="charliteral">&#39;0&#39;</span>; <span class="comment">// sum of 3 bits</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> result.insert(result.begin(), sum);</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> </div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> carry = char((firstBit &amp; secondBit) | (secondBit &amp; carry) |</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> (firstBit &amp; carry)); <span class="comment">// sum of 3 bits</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> }</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordflow">if</span> (carry) {</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> result.insert(result.begin(), <span class="charliteral">&#39;1&#39;</span>); <span class="comment">// adding 1 incase of overflow</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> }</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span>}</div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../dd/dba/namespacedivide__and__conquer.html">divide_and_conquer</a> {</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a> {</div>
<div class="foldopen" id="foldopen00036" data-start="{" data-end="}">
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ad76f5cac3ef8dc034f6abb99b64c2b20"> 36</a></span>std::string <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ad76f5cac3ef8dc034f6abb99b64c2b20">add_strings</a>(std::string first, std::string second) {</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> std::string result; <span class="comment">// to store the resulting sum bits</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// make the string lengths equal</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> int64_t len1 = first.size();</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> int64_t len2 = second.size();</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> std::string zero = <span class="stringliteral">&quot;0&quot;</span>;</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keywordflow">if</span> (len1 &lt; len2) {</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">for</span> (int64_t i = 0; i &lt; len2 - len1; i++) {</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> zero += first;</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> first = zero;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> zero = <span class="stringliteral">&quot;0&quot;</span>; <span class="comment">// Prevents CI from failing</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> }</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (len1 &gt; len2) {</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordflow">for</span> (int64_t i = 0; i &lt; len1 - len2; i++) {</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> zero += second;</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> second = zero;</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> zero = <span class="stringliteral">&quot;0&quot;</span>; <span class="comment">// Prevents CI from failing</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> }</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> }</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> int64_t length = std::max(len1, len2);</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> int64_t carry = 0;</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keywordflow">for</span> (int64_t i = length - 1; i &gt;= 0; i--) {</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> int64_t firstBit = first.at(i) - <span class="charliteral">&#39;0&#39;</span>;</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> int64_t secondBit = second.at(i) - <span class="charliteral">&#39;0&#39;</span>;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> </div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> int64_t sum = (char(firstBit ^ secondBit ^ carry)) + <span class="charliteral">&#39;0&#39;</span>; <span class="comment">// sum of 3 bits</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> result.insert(result.begin(), sum);</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> carry = char((firstBit &amp; secondBit) | (secondBit &amp; carry) |</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> (firstBit &amp; carry)); <span class="comment">// sum of 3 bits</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> }</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="keywordflow">if</span> (carry) {</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> result.insert(result.begin(), <span class="charliteral">&#39;1&#39;</span>); <span class="comment">// adding 1 incase of overflow</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> }</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span>}</div>
</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span></div>
<div class="foldopen" id="foldopen00086" data-start="{" data-end="}">
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"><a class="line" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6"> 86</a></span>std::string <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6">safe_substr</a>(<span class="keyword">const</span> std::string &amp;str, int64_t x1, int64_t x2, int64_t n) {</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> int64_t len = str.size();</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> </div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="keywordflow">if</span> (len &gt;= n) {</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="keywordflow">return</span> str.substr(x1, x2);</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> }</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> </div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> int64_t y1 = x1 - (n - len); <span class="comment">// index in str of first char of substring of &quot;whole&quot; string</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> int64_t y2 = (x1 + x2 - 1) - (n - len); <span class="comment">// index in str of last char of substring of &quot;whole&quot; string</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keywordflow">if</span> (y2 &lt; 0) {</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;0&quot;</span>;</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (y1 &lt; 0) {</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keywordflow">return</span> str.substr(0, y2 + 1);</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="keywordflow">return</span> str.substr(y1, x2);</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> }</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span>}</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span></div>
<div class="foldopen" id="foldopen00085" data-start="{" data-end="}">
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"><a class="line" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6"> 85</a></span>std::string <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6">safe_substr</a>(<span class="keyword">const</span> std::string &amp;str, int64_t x1, int64_t x2, int64_t n) {</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> int64_t len = str.size();</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keywordflow">if</span> (len &gt;= n) {</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="keywordflow">return</span> str.substr(x1, x2);</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> }</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> </div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> int64_t y1 = x1 - (n - len); <span class="comment">// index in str of first char of substring of &quot;whole&quot; string</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> int64_t y2 = (x1 + x2 - 1) - (n - len); <span class="comment">// index in str of last char of substring of &quot;whole&quot; string</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> </div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keywordflow">if</span> (y2 &lt; 0) {</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;0&quot;</span>;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (y1 &lt; 0) {</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="keywordflow">return</span> str.substr(0, y2 + 1);</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordflow">return</span> str.substr(y1, x2);</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> }</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span>}</div>
</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span></div>
<div class="foldopen" id="foldopen00112" data-start="{" data-end="}">
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"><a class="line" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#a7a890d2f26855ada3b9f1d43aec70a86"> 112</a></span>int64_t <a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a>(std::string str1, std::string str2) {</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> int64_t len1 = str1.size();</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> int64_t len2 = str2.size();</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> int64_t n = std::max(len1, len2);</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordflow">if</span> (n == 0) {</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> }</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordflow">if</span> (n == 1) {</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keywordflow">return</span> (str1[0] - <span class="charliteral">&#39;0&#39;</span>) * (str2[0] - <span class="charliteral">&#39;0&#39;</span>);</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> }</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> int64_t fh = n / 2; <span class="comment">// first half of string</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> int64_t sh = n - fh; <span class="comment">// second half of string</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> </div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> std::string Xl = <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str1, 0, fh, n); <span class="comment">// first half of first string</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> std::string Xr = <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str1, fh, sh, n); <span class="comment">// second half of first string</span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> </div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> std::string Yl = <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str2, 0, fh, n); <span class="comment">// first half of second string</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> std::string Yr = <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str2, fh, sh, n); <span class="comment">// second half of second string</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> </div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="comment">// calculating the three products of inputs of size n/2 recursively</span></div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> int64_t product1 = <a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a>(Xl, Yl);</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> int64_t product2 = <a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a>(Xr, Yr);</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> int64_t product3 = <a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a>(</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ad76f5cac3ef8dc034f6abb99b64c2b20">divide_and_conquer::karatsuba_algorithm::add_strings</a>(Xl, Xr),</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ad76f5cac3ef8dc034f6abb99b64c2b20">divide_and_conquer::karatsuba_algorithm::add_strings</a>(Yl, Yr));</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> </div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="keywordflow">return</span> product1 * (1 &lt;&lt; (2 * sh)) +</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> (product3 - product1 - product2) * (1 &lt;&lt; sh) +</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> product2; <span class="comment">// combining the three products to get the final result.</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span>}</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span></div>
<div class="foldopen" id="foldopen00111" data-start="{" data-end="}">
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"><a class="line" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#a7a890d2f26855ada3b9f1d43aec70a86"> 111</a></span>int64_t <a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a>(std::string str1, std::string str2) {</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> int64_t len1 = str1.size();</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> int64_t len2 = str2.size();</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> int64_t n = std::max(len1, len2);</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> </div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordflow">if</span> (n == 0) {</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> }</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="keywordflow">if</span> (n == 1) {</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordflow">return</span> (str1[0] - <span class="charliteral">&#39;0&#39;</span>) * (str2[0] - <span class="charliteral">&#39;0&#39;</span>);</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> }</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> </div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> int64_t fh = n / 2; <span class="comment">// first half of string</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> int64_t sh = n - fh; <span class="comment">// second half of string</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> </div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> std::string Xl = <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str1, 0, fh, n); <span class="comment">// first half of first string</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> std::string Xr = <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str1, fh, sh, n); <span class="comment">// second half of first string</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> std::string Yl = <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str2, 0, fh, n); <span class="comment">// first half of second string</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> std::string Yr = <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a>(str2, fh, sh, n); <span class="comment">// second half of second string</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> </div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="comment">// calculating the three products of inputs of size n/2 recursively</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> int64_t product1 = <a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a>(Xl, Yl);</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> int64_t product2 = <a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a>(Xr, Yr);</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> int64_t product3 = <a class="code hl_namespace" href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a>(</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ad76f5cac3ef8dc034f6abb99b64c2b20">divide_and_conquer::karatsuba_algorithm::add_strings</a>(Xl, Xr),</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ad76f5cac3ef8dc034f6abb99b64c2b20">divide_and_conquer::karatsuba_algorithm::add_strings</a>(Yl, Yr));</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordflow">return</span> product1 * (1 &lt;&lt; (2 * sh)) +</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> (product3 - product1 - product2) * (1 &lt;&lt; sh) +</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> product2; <span class="comment">// combining the three products to get the final result.</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span>}</div>
</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span>} <span class="comment">// namespace karatsuba_algorithm</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span>} <span class="comment">// namespace divide_and_conquer</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span></div>
<div class="foldopen" id="foldopen00151" data-start="{" data-end="}">
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"><a class="line" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aa8dca7b867074164d5f45b0f3851269d"> 151</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>() {</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="comment">// 1st test</span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> std::string s11 = <span class="stringliteral">&quot;1&quot;</span>; <span class="comment">// 1</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> std::string s12 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> std::cout &lt;&lt; <span class="stringliteral">&quot;1st test... &quot;</span>;</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> assert(<a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#a7a890d2f26855ada3b9f1d43aec70a86">divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</a>(</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> s11, s12) == 10);</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> </div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <span class="comment">// 2nd test</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> std::string s21 = <span class="stringliteral">&quot;11&quot;</span>; <span class="comment">// 3</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> std::string s22 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> std::cout &lt;&lt; <span class="stringliteral">&quot;2nd test... &quot;</span>;</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> assert(<a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#a7a890d2f26855ada3b9f1d43aec70a86">divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</a>(</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> s21, s22) == 30);</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="comment">// 3rd test</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> std::string s31 = <span class="stringliteral">&quot;110&quot;</span>; <span class="comment">// 6</span></div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> std::string s32 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> std::cout &lt;&lt; <span class="stringliteral">&quot;3rd test... &quot;</span>;</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> assert(<a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#a7a890d2f26855ada3b9f1d43aec70a86">divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</a>(</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> s31, s32) == 60);</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span>}</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span>} <span class="comment">// namespace karatsuba_algorithm</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span>} <span class="comment">// namespace divide_and_conquer</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span></div>
<div class="foldopen" id="foldopen00150" data-start="{" data-end="}">
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"><a class="line" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aa8dca7b867074164d5f45b0f3851269d"> 150</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>() {</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <span class="comment">// 1st test</span></div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> std::string s11 = <span class="stringliteral">&quot;1&quot;</span>; <span class="comment">// 1</span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> std::string s12 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> std::cout &lt;&lt; <span class="stringliteral">&quot;1st test... &quot;</span>;</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> assert(<a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#a7a890d2f26855ada3b9f1d43aec70a86">divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</a>(</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> s11, s12) == 10);</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> </div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="comment">// 2nd test</span></div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> std::string s21 = <span class="stringliteral">&quot;11&quot;</span>; <span class="comment">// 3</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> std::string s22 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> std::cout &lt;&lt; <span class="stringliteral">&quot;2nd test... &quot;</span>;</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> assert(<a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#a7a890d2f26855ada3b9f1d43aec70a86">divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</a>(</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> s21, s22) == 30);</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <span class="comment">// 3rd test</span></div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> std::string s31 = <span class="stringliteral">&quot;110&quot;</span>; <span class="comment">// 6</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> std::string s32 = <span class="stringliteral">&quot;1010&quot;</span>; <span class="comment">// 10</span></div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> std::cout &lt;&lt; <span class="stringliteral">&quot;3rd test... &quot;</span>;</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> assert(<a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#a7a890d2f26855ada3b9f1d43aec70a86">divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</a>(</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> s31, s32) == 60);</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span>}</div>
</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span></div>
<div class="foldopen" id="foldopen00181" data-start="{" data-end="}">
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"><a class="line" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4"> 181</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a>() {</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// run self-test implementations</span></div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span>}</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span></div>
<div class="foldopen" id="foldopen00180" data-start="{" data-end="}">
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"><a class="line" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4"> 180</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a>() {</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <a class="code hl_function" href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// run self-test implementations</span></div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span>}</div>
</div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_a7a890d2f26855ada3b9f1d43aec70a86"><div class="ttname"><a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#a7a890d2f26855ada3b9f1d43aec70a86">divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</a></div><div class="ttdeci">int64_t karatsuba_algorithm(std::string str1, std::string str2)</div><div class="ttdoc">The main function implements Karatsuba&#39;s algorithm for fast multiplication.</div><div class="ttdef"><b>Definition</b> <a href="#l00112">karatsuba_algorithm_for_fast_multiplication.cpp:112</a></div></div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Self-test implementations.</div><div class="ttdef"><b>Definition</b> <a href="#l00151">karatsuba_algorithm_for_fast_multiplication.cpp:151</a></div></div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_aad9e3edfe156b59fc06a5585403fe0d6"><div class="ttname"><a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a></div><div class="ttdeci">std::string safe_substr(const std::string &amp;str, int64_t x1, int64_t x2, int64_t n)</div><div class="ttdoc">Wrapper function for substr that considers leading zeros.</div><div class="ttdef"><b>Definition</b> <a href="#l00086">karatsuba_algorithm_for_fast_multiplication.cpp:86</a></div></div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_ad76f5cac3ef8dc034f6abb99b64c2b20"><div class="ttname"><a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ad76f5cac3ef8dc034f6abb99b64c2b20">divide_and_conquer::karatsuba_algorithm::add_strings</a></div><div class="ttdeci">std::string add_strings(std::string first, std::string second)</div><div class="ttdoc">Binary addition.</div><div class="ttdef"><b>Definition</b> <a href="#l00037">karatsuba_algorithm_for_fast_multiplication.cpp:37</a></div></div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_ae66f6b31b5ad750f1fe042a706a4e3d4"><div class="ttname"><a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a></div><div class="ttdeci">int main()</div><div class="ttdoc">Main function.</div><div class="ttdef"><b>Definition</b> <a href="#l00181">karatsuba_algorithm_for_fast_multiplication.cpp:181</a></div></div>
<div class="ttc" id="anamespacedivide__and__conquer_html"><div class="ttname"><a href="../../dd/dba/namespacedivide__and__conquer.html">divide_and_conquer</a></div><div class="ttdoc">for std::vector</div></div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_a7a890d2f26855ada3b9f1d43aec70a86"><div class="ttname"><a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#a7a890d2f26855ada3b9f1d43aec70a86">divide_and_conquer::karatsuba_algorithm::karatsuba_algorithm</a></div><div class="ttdeci">int64_t karatsuba_algorithm(std::string str1, std::string str2)</div><div class="ttdoc">The main function implements Karatsuba&#39;s algorithm for fast multiplication.</div><div class="ttdef"><b>Definition</b> <a href="#l00111">karatsuba_algorithm_for_fast_multiplication.cpp:111</a></div></div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Self-test implementations.</div><div class="ttdef"><b>Definition</b> <a href="#l00150">karatsuba_algorithm_for_fast_multiplication.cpp:150</a></div></div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_aad9e3edfe156b59fc06a5585403fe0d6"><div class="ttname"><a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#aad9e3edfe156b59fc06a5585403fe0d6">divide_and_conquer::karatsuba_algorithm::safe_substr</a></div><div class="ttdeci">std::string safe_substr(const std::string &amp;str, int64_t x1, int64_t x2, int64_t n)</div><div class="ttdoc">Wrapper function for substr that considers leading zeros.</div><div class="ttdef"><b>Definition</b> <a href="#l00085">karatsuba_algorithm_for_fast_multiplication.cpp:85</a></div></div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_ad76f5cac3ef8dc034f6abb99b64c2b20"><div class="ttname"><a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ad76f5cac3ef8dc034f6abb99b64c2b20">divide_and_conquer::karatsuba_algorithm::add_strings</a></div><div class="ttdeci">std::string add_strings(std::string first, std::string second)</div><div class="ttdoc">Binary addition.</div><div class="ttdef"><b>Definition</b> <a href="#l00036">karatsuba_algorithm_for_fast_multiplication.cpp:36</a></div></div>
<div class="ttc" id="akaratsuba__algorithm__for__fast__multiplication_8cpp_html_ae66f6b31b5ad750f1fe042a706a4e3d4"><div class="ttname"><a href="../../da/dd3/karatsuba__algorithm__for__fast__multiplication_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a></div><div class="ttdeci">int main()</div><div class="ttdoc">Main function.</div><div class="ttdef"><b>Definition</b> <a href="#l00180">karatsuba_algorithm_for_fast_multiplication.cpp:180</a></div></div>
<div class="ttc" id="anamespacedivide__and__conquer_html"><div class="ttname"><a href="../../dd/dba/namespacedivide__and__conquer.html">divide_and_conquer</a></div><div class="ttdoc">for IO operations</div></div>
<div class="ttc" id="anamespacekaratsuba__algorithm_html"><div class="ttname"><a href="../../de/d41/namespacekaratsuba__algorithm.html">karatsuba_algorithm</a></div><div class="ttdoc">Functions for the Karatsuba algorithm for fast multiplication implementation.</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->

View File

@@ -149,11 +149,8 @@ Functions</h2></td></tr>
<p>for assert</p>
<p>Backtracking algorithms.</p>
<p>for IO operations</p>
<p>for std::vector</p>
<p>for assert for I/O operation</p>
<p>Backtracking algorithms</p>
<p>for std::array for IO operations</p>
<p>Backtracking algorithms</p>
<p>for std::array</p>
<p>Backtracking algorithms</p>
<p>for std::count for assert for IO operations for std::list for std::accumulate for std::vector</p>

View File

@@ -167,7 +167,7 @@ Private Attributes</h2></td></tr>
<div class="textblock"><div class="compoundTemplParams">template&lt;typename T&gt;<br />
class graph::Graph&lt; T &gt;</div><p>Class for representing a graph as an adjacency list. Its vertices are indexed 0, 1, ..., N - 1. </p>
<p class="definition">Definition at line <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html#l00064">64</a> of file <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html">breadth_first_search.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html#l00063">63</a> of file <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html">breadth_first_search.cpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a8839fa14bff19d2deab4a618447c13e5" name="a8839fa14bff19d2deab4a618447c13e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8839fa14bff19d2deab4a618447c13e5">&#9670;&#160;</a></span>Graph()</h2>
@@ -215,7 +215,7 @@ template&lt;typename T&gt; </div>
<div class="line"><span class="lineno"> 66</span> <a class="code hl_variable" href="#a59940c462861f2fcf4951d1b6c084e6a">neighbors</a>[<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">edge</a>.second].push_back(<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">edge</a>.first);</div>
<div class="line"><span class="lineno"> 67</span> }</div>
<div class="line"><span class="lineno"> 68</span> }</div>
<div class="ttc" id="aclassgraph_1_1_graph_html"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph</a></div><div class="ttdef"><b>Definition</b> <a href="../../df/d82/breadth__first__search_8cpp_source.html#l00064">breadth_first_search.cpp:64</a></div></div>
<div class="ttc" id="aclassgraph_1_1_graph_html"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph</a></div><div class="ttdef"><b>Definition</b> <a href="../../df/d82/breadth__first__search_8cpp_source.html#l00063">breadth_first_search.cpp:63</a></div></div>
<div class="ttc" id="aclassgraph_1_1_graph_html_a59940c462861f2fcf4951d1b6c084e6a"><div class="ttname"><a href="#a59940c462861f2fcf4951d1b6c084e6a">graph::Graph::neighbors</a></div><div class="ttdeci">std::vector&lt; std::vector&lt; int &gt; &gt; neighbors</div><div class="ttdoc">for each vertex it stores a list indicies of its neighbors</div><div class="ttdef"><b>Definition</b> <a href="../../de/dde/lowest__common__ancestor_8cpp_source.html#l00077">lowest_common_ancestor.cpp:77</a></div></div>
</div><!-- fragment -->
</div>
@@ -257,15 +257,15 @@ template&lt;typename T&gt; </div>
<p>add_edge(u,v,bidir) is used to add an edge between node u and node v by default , bidir is made true , i.e graph is bidirectional . It means if edge(u,v) is added then u--&gt;v and v--&gt;u both edges exist.</p>
<p>to make the graph unidirectional pass the third parameter of add_edge as false which will</p>
<p class="definition">Definition at line <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html#l00074">74</a> of file <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html">breadth_first_search.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 74</span> {</div>
<div class="line"><span class="lineno"> 84</span> <a class="code hl_variable" href="#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>[<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">u</a>].push_back(<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">v</a>); <span class="comment">// u--&gt;v edge added</span></div>
<div class="line"><span class="lineno"> 85</span> <span class="keywordflow">if</span> (<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">bidir</a> == <span class="keyword">true</span>) {</div>
<div class="line"><span class="lineno"> 86</span> <span class="comment">// if graph is bidirectional</span></div>
<div class="line"><span class="lineno"> 87</span> <a class="code hl_variable" href="#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>[<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">v</a>].push_back(<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">u</a>); <span class="comment">// v--&gt;u edge added</span></div>
<div class="line"><span class="lineno"> 88</span> }</div>
<div class="line"><span class="lineno"> 89</span> }</div>
<div class="ttc" id="aclassgraph_1_1_graph_html_acebf0505d625b043bb9c8c27c7a8def0"><div class="ttname"><a href="#acebf0505d625b043bb9c8c27c7a8def0">graph::Graph::adjacency_list</a></div><div class="ttdeci">std::map&lt; T, std::list&lt; T &gt; &gt; adjacency_list</div><div class="ttdef"><b>Definition</b> <a href="../../df/d82/breadth__first__search_8cpp_source.html#l00069">breadth_first_search.cpp:69</a></div></div>
<p class="definition">Definition at line <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html#l00073">73</a> of file <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html">breadth_first_search.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 73</span> {</div>
<div class="line"><span class="lineno"> 83</span> <a class="code hl_variable" href="#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>[<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">u</a>].push_back(<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">v</a>); <span class="comment">// u--&gt;v edge added</span></div>
<div class="line"><span class="lineno"> 84</span> <span class="keywordflow">if</span> (<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">bidir</a> == <span class="keyword">true</span>) {</div>
<div class="line"><span class="lineno"> 85</span> <span class="comment">// if graph is bidirectional</span></div>
<div class="line"><span class="lineno"> 86</span> <a class="code hl_variable" href="#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>[<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">v</a>].push_back(<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">u</a>); <span class="comment">// v--&gt;u edge added</span></div>
<div class="line"><span class="lineno"> 87</span> }</div>
<div class="line"><span class="lineno"> 88</span> }</div>
<div class="ttc" id="aclassgraph_1_1_graph_html_acebf0505d625b043bb9c8c27c7a8def0"><div class="ttname"><a href="#acebf0505d625b043bb9c8c27c7a8def0">graph::Graph::adjacency_list</a></div><div class="ttdeci">std::map&lt; T, std::list&lt; T &gt; &gt; adjacency_list</div><div class="ttdef"><b>Definition</b> <a href="../../df/d82/breadth__first__search_8cpp_source.html#l00068">breadth_first_search.cpp:68</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -305,32 +305,32 @@ template&lt;typename T&gt; </div>
<p>if the neighbour is unvisited , push it into the queue</p>
<p>mark the neighbour as visited</p>
<p class="definition">Definition at line <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html#l00096">96</a> of file <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html">breadth_first_search.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 96</span> {</div>
<div class="line"><span class="lineno"> 98</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">std::map&lt;T, bool&gt;</a> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">visited</a>;</div>
<div class="line"><span class="lineno"> 101</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span> &amp;<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">adjlist</a> : <a class="code hl_variable" href="#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>) {</div>
<div class="line"><span class="lineno"> 102</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">visited</a>[<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">adjlist</a>.first] = <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 103</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span> &amp;<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">node</a> : <a class="code hl_variable" href="#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>[<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">adjlist</a>.first]) {</div>
<div class="line"><span class="lineno"> 104</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">visited</a>[<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">node</a>] = <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 105</span> }</div>
<div class="line"><span class="lineno"> 106</span> }</div>
<div class="line"><span class="lineno"> 107</span></div>
<div class="line"><span class="lineno"> 109</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">std::queue&lt;T&gt;</a> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">tracker</a>;</div>
<div class="line"><span class="lineno"> 110</span></div>
<div class="line"><span class="lineno"> 112</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">tracker</a>.push(<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">src</a>);</div>
<div class="line"><span class="lineno"> 114</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">visited</a>[<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">src</a>] = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 115</span> <span class="keywordflow">while</span> (!<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">tracker</a>.empty()) {</div>
<div class="line"><span class="lineno"> 118</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">T</a> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">node</a> = <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">tracker</a>.front();</div>
<div class="line"><span class="lineno"> 120</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">tracker</a>.pop();</div>
<div class="line"><span class="lineno"> 121</span> <span class="keywordflow">for</span> (<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">T</a> <span class="keyword">const</span> &amp;<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">neighbour</a> : <a class="code hl_variable" href="#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>[<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">node</a>]) {</div>
<div class="line"><span class="lineno"> 124</span> <span class="keywordflow">if</span> (!<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">visited</a>[<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">neighbour</a>]) {</div>
<div class="line"><span class="lineno"> 126</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">tracker</a>.push(<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">neighbour</a>);</div>
<div class="line"><span class="lineno"> 128</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">visited</a>[<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">neighbour</a>] = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 129</span> }</div>
<div class="line"><span class="lineno"> 130</span> }</div>
<div class="line"><span class="lineno"> 131</span> }</div>
<div class="line"><span class="lineno"> 132</span> <span class="keywordflow">return</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">visited</a>;</div>
<div class="line"><span class="lineno"> 133</span> }</div>
<p class="definition">Definition at line <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html#l00095">95</a> of file <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html">breadth_first_search.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 95</span> {</div>
<div class="line"><span class="lineno"> 97</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">std::map&lt;T, bool&gt;</a> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">visited</a>;</div>
<div class="line"><span class="lineno"> 100</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span> &amp;<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">adjlist</a> : <a class="code hl_variable" href="#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>) {</div>
<div class="line"><span class="lineno"> 101</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">visited</a>[<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">adjlist</a>.first] = <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 102</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span> &amp;<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">node</a> : <a class="code hl_variable" href="#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>[<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">adjlist</a>.first]) {</div>
<div class="line"><span class="lineno"> 103</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">visited</a>[<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">node</a>] = <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 104</span> }</div>
<div class="line"><span class="lineno"> 105</span> }</div>
<div class="line"><span class="lineno"> 106</span></div>
<div class="line"><span class="lineno"> 108</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">std::queue&lt;T&gt;</a> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">tracker</a>;</div>
<div class="line"><span class="lineno"> 109</span></div>
<div class="line"><span class="lineno"> 111</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">tracker</a>.push(<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">src</a>);</div>
<div class="line"><span class="lineno"> 113</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">visited</a>[<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">src</a>] = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 114</span> <span class="keywordflow">while</span> (!<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">tracker</a>.empty()) {</div>
<div class="line"><span class="lineno"> 117</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">T</a> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">node</a> = <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">tracker</a>.front();</div>
<div class="line"><span class="lineno"> 119</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">tracker</a>.pop();</div>
<div class="line"><span class="lineno"> 120</span> <span class="keywordflow">for</span> (<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">T</a> <span class="keyword">const</span> &amp;<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">neighbour</a> : <a class="code hl_variable" href="#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>[<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">node</a>]) {</div>
<div class="line"><span class="lineno"> 123</span> <span class="keywordflow">if</span> (!<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">visited</a>[<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">neighbour</a>]) {</div>
<div class="line"><span class="lineno"> 125</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">tracker</a>.push(<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">neighbour</a>);</div>
<div class="line"><span class="lineno"> 127</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">visited</a>[<a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">neighbour</a>] = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 128</span> }</div>
<div class="line"><span class="lineno"> 129</span> }</div>
<div class="line"><span class="lineno"> 130</span> }</div>
<div class="line"><span class="lineno"> 131</span> <span class="keywordflow">return</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">visited</a>;</div>
<div class="line"><span class="lineno"> 132</span> }</div>
</div><!-- fragment -->
</div>
</div>
@@ -389,7 +389,7 @@ template&lt;typename T&gt; </div>
</div><div class="memdoc">
<p>adjacency_list maps every vertex to the list of its neighbours in the order in which they are added. </p>
<p class="definition">Definition at line <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html#l00069">69</a> of file <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html">breadth_first_search.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html#l00068">68</a> of file <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html">breadth_first_search.cpp</a>.</p>
</div>
</div>

View File

@@ -125,12 +125,12 @@ $(function(){initNavTree('dd/dba/namespacedivide__and__conquer.html','../../');
</div><!--header-->
<div class="contents">
<p>for std::vector
<p>for IO operations
<a href="#details">More...</a></p>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>for std::vector </p>
<div class="textblock"><p>for IO operations </p>
<p><a href="https://en.wikipedia.org/wiki/Strassen_algorithm" target="_blank">Strassen's algorithm</a> is one of the methods for multiplying two matrices. It is one of the faster algorithms for larger matrices than naive multiplication method.</p>
<p>for assert for string for IO operations</p>
<p>for assert for string</p>
<p>Divide and Conquer algorithms</p>
<p>It involves dividing each matrices into 4 blocks, given they are evenly divisible, and are combined with new defined matrices involving 7 matrix multiplications instead of eight, yielding O(n^2.8073) complexity.</p>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/AshishYUO" target="_blank">AshishYUO</a> For assert operation For std::chrono; time measurement For I/O operations For std::tuple For creating dynamic arrays</dd></dl>

View File

@@ -1,15 +1,13 @@
<map id="data_structures/trie_tree.cpp" name="data_structures/trie_tree.cpp">
<area shape="rect" id="Node000001" title="Implementation of Trie data structure for English alphabets in small characters." alt="" coords="184,5,317,46"/>
<area shape="rect" id="Node000001" title="Implementation of Trie data structure for English alphabets in small characters." alt="" coords="137,5,270,46"/>
<area shape="rect" id="Node000002" title=" " alt="" coords="5,94,56,120"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="196,49,72,94,70,89,195,44"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="162,49,71,90,69,85,159,44"/>
<area shape="rect" id="Node000003" title=" " alt="" coords="80,94,144,120"/>
<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="217,49,147,88,145,84,215,44"/>
<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="183,48,139,86,136,82,179,44"/>
<area shape="rect" id="Node000004" title=" " alt="" coords="168,94,240,120"/>
<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="241,48,221,82,217,79,237,45"/>
<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="206,46,206,78,201,78,201,46"/>
<area shape="rect" id="Node000005" title=" " alt="" coords="263,94,331,120"/>
<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="264,45,284,79,280,82,260,48"/>
<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="229,44,273,82,269,86,225,48"/>
<area shape="rect" id="Node000006" title=" " alt="" coords="356,94,409,120"/>
<area shape="poly" id="edge5_Node000001_Node000006" title=" " alt="" coords="285,44,351,83,348,88,282,49"/>
<area shape="rect" id="Node000007" title=" " alt="" coords="434,94,491,120"/>
<area shape="poly" id="edge6_Node000001_Node000007" title=" " alt="" coords="304,44,420,87,418,92,303,49"/>
<area shape="poly" id="edge5_Node000001_Node000006" title=" " alt="" coords="250,44,343,85,341,90,247,49"/>
</map>

View File

@@ -1 +1 @@
1cf5791bbfd7e15df47212f7724835dd
25563c9822626b8e6bcc2e85f96288f5

View File

@@ -4,8 +4,8 @@
<!-- Generated by graphviz version 12.2.1 (20241206.2353)
-->
<!-- Title: data_structures/trie_tree.cpp Pages: 1 -->
<svg width="372pt" height="94pt"
viewBox="0.00 0.00 372.38 93.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="311pt" height="94pt"
viewBox="0.00 0.00 310.88 93.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
@@ -23,9 +23,9 @@
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Implementation of Trie data structure for English alphabets in small characters.">
<polygon fill="#999999" stroke="#666666" points="233.88,-85.75 133.88,-85.75 133.88,-55.25 233.88,-55.25 233.88,-85.75"/>
<text text-anchor="start" x="141.88" y="-72.25" font-family="Helvetica,sans-Serif" font-size="10.00">data_structures/trie</text>
<text text-anchor="middle" x="183.88" y="-61" font-family="Helvetica,sans-Serif" font-size="10.00">_tree.cpp</text>
<polygon fill="#999999" stroke="#666666" points="198.88,-85.75 98.88,-85.75 98.88,-55.25 198.88,-55.25 198.88,-85.75"/>
<text text-anchor="start" x="106.88" y="-72.25" font-family="Helvetica,sans-Serif" font-size="10.00">data_structures/trie</text>
<text text-anchor="middle" x="148.88" y="-61" font-family="Helvetica,sans-Serif" font-size="10.00">_tree.cpp</text>
</a>
</g>
</g>
@@ -42,8 +42,8 @@
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M142.66,-54.8C113.56,-44.41 75.22,-30.73 48.97,-21.36"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="50.2,-18.09 39.6,-18.02 47.85,-24.68 50.2,-18.09"/>
<path fill="none" stroke="#63b8ff" d="M116.41,-54.8C95.5,-45.33 68.54,-33.12 48.26,-23.93"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="49.98,-20.87 39.43,-19.93 47.1,-27.25 49.98,-20.87"/>
</a>
</g>
</g>
@@ -60,8 +60,8 @@
<g id="edge2_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M157.9,-54.8C141.91,-45.74 121.49,-34.19 105.56,-25.16"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="107.57,-22.28 97.14,-20.4 104.12,-28.37 107.57,-22.28"/>
<path fill="none" stroke="#63b8ff" d="M131.82,-54.95C121.92,-46.5 109.42,-35.83 99.16,-27.08"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="101.54,-24.51 91.66,-20.68 97,-29.84 101.54,-24.51"/>
</a>
</g>
</g>
@@ -78,8 +78,8 @@
<g id="edge3_Node000001_Node000004" class="edge">
<title>Node1&#45;&gt;Node4</title>
<g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M175.22,-54.95C170.66,-47.28 165.01,-37.77 160.12,-29.54"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="163.16,-27.81 155.04,-21 157.15,-31.39 163.16,-27.81"/>
<path fill="none" stroke="#63b8ff" d="M148.88,-54.95C148.88,-47.71 148.88,-38.84 148.88,-30.94"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="152.38,-31.21 148.88,-21.21 145.38,-31.21 152.38,-31.21"/>
</a>
</g>
</g>
@@ -96,8 +96,8 @@
<g id="edge4_Node000001_Node000005" class="edge">
<title>Node1&#45;&gt;Node5</title>
<g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M192.53,-54.95C197.09,-47.28 202.74,-37.77 207.63,-29.54"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="210.6,-31.39 212.71,-21 204.59,-27.81 210.6,-31.39"/>
<path fill="none" stroke="#63b8ff" d="M166.18,-54.95C176.22,-46.5 188.9,-35.83 199.31,-27.08"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="201.53,-29.79 206.93,-20.68 197.02,-24.43 201.53,-29.79"/>
</a>
</g>
</g>
@@ -114,26 +114,8 @@
<g id="edge5_Node000001_Node000006" class="edge">
<title>Node1&#45;&gt;Node6</title>
<g id="a_edge5_Node000001_Node000006"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M208.6,-54.8C223.68,-45.83 242.89,-34.41 257.99,-25.42"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="259.59,-28.55 266.39,-20.43 256.01,-22.53 259.59,-28.55"/>
</a>
</g>
</g>
<!-- Node7 -->
<g id="Node000007" class="node">
<title>Node7</title>
<g id="a_Node000007"><a xlink:title=" ">
<polygon fill="#e0e0e0" stroke="#999999" points="364.38,-19.25 321.38,-19.25 321.38,0 364.38,0 364.38,-19.25"/>
<text text-anchor="middle" x="342.88" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">vector</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node7 -->
<g id="edge6_Node000001_Node000007" class="edge">
<title>Node1&#45;&gt;Node7</title>
<g id="a_edge6_Node000001_Node000007"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M223.59,-54.8C250.39,-44.87 285.32,-31.94 310.44,-22.63"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="311.65,-25.92 319.82,-19.16 309.22,-19.35 311.65,-25.92"/>
<path fill="none" stroke="#63b8ff" d="M182.34,-54.8C203.76,-45.38 231.35,-33.26 252.2,-24.1"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="253.58,-27.32 261.33,-20.09 250.77,-20.91 253.58,-27.32"/>
</a>
</g>
</g>

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@@ -4,17 +4,17 @@
<!-- Generated by graphviz version 12.2.1 (20241206.2353)
-->
<!-- Title: data_structures/trie_tree.cpp Pages: 1 -->
<svg width="372pt" height="94pt"
viewBox="0.00 0.00 372.38 93.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="311pt" height="94pt"
viewBox="0.00 0.00 310.88 93.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 89.75)">
<title>data_structures/trie_tree.cpp</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Implementation of Trie data structure for English alphabets in small characters.">
<polygon fill="#999999" stroke="#666666" points="233.88,-85.75 133.88,-85.75 133.88,-55.25 233.88,-55.25 233.88,-85.75"/>
<text text-anchor="start" x="141.88" y="-72.25" font-family="Helvetica,sans-Serif" font-size="10.00">data_structures/trie</text>
<text text-anchor="middle" x="183.88" y="-61" font-family="Helvetica,sans-Serif" font-size="10.00">_tree.cpp</text>
<polygon fill="#999999" stroke="#666666" points="198.88,-85.75 98.88,-85.75 98.88,-55.25 198.88,-55.25 198.88,-85.75"/>
<text text-anchor="start" x="106.88" y="-72.25" font-family="Helvetica,sans-Serif" font-size="10.00">data_structures/trie</text>
<text text-anchor="middle" x="148.88" y="-61" font-family="Helvetica,sans-Serif" font-size="10.00">_tree.cpp</text>
</a>
</g>
</g>
@@ -31,8 +31,8 @@
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M142.66,-54.8C113.56,-44.41 75.22,-30.73 48.97,-21.36"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="50.2,-18.09 39.6,-18.02 47.85,-24.68 50.2,-18.09"/>
<path fill="none" stroke="#63b8ff" d="M116.41,-54.8C95.5,-45.33 68.54,-33.12 48.26,-23.93"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="49.98,-20.87 39.43,-19.93 47.1,-27.25 49.98,-20.87"/>
</a>
</g>
</g>
@@ -49,8 +49,8 @@
<g id="edge2_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M157.9,-54.8C141.91,-45.74 121.49,-34.19 105.56,-25.16"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="107.57,-22.28 97.14,-20.4 104.12,-28.37 107.57,-22.28"/>
<path fill="none" stroke="#63b8ff" d="M131.82,-54.95C121.92,-46.5 109.42,-35.83 99.16,-27.08"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="101.54,-24.51 91.66,-20.68 97,-29.84 101.54,-24.51"/>
</a>
</g>
</g>
@@ -67,8 +67,8 @@
<g id="edge3_Node000001_Node000004" class="edge">
<title>Node1&#45;&gt;Node4</title>
<g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M175.22,-54.95C170.66,-47.28 165.01,-37.77 160.12,-29.54"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="163.16,-27.81 155.04,-21 157.15,-31.39 163.16,-27.81"/>
<path fill="none" stroke="#63b8ff" d="M148.88,-54.95C148.88,-47.71 148.88,-38.84 148.88,-30.94"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="152.38,-31.21 148.88,-21.21 145.38,-31.21 152.38,-31.21"/>
</a>
</g>
</g>
@@ -85,8 +85,8 @@
<g id="edge4_Node000001_Node000005" class="edge">
<title>Node1&#45;&gt;Node5</title>
<g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M192.53,-54.95C197.09,-47.28 202.74,-37.77 207.63,-29.54"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="210.6,-31.39 212.71,-21 204.59,-27.81 210.6,-31.39"/>
<path fill="none" stroke="#63b8ff" d="M166.18,-54.95C176.22,-46.5 188.9,-35.83 199.31,-27.08"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="201.53,-29.79 206.93,-20.68 197.02,-24.43 201.53,-29.79"/>
</a>
</g>
</g>
@@ -103,26 +103,8 @@
<g id="edge5_Node000001_Node000006" class="edge">
<title>Node1&#45;&gt;Node6</title>
<g id="a_edge5_Node000001_Node000006"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M208.6,-54.8C223.68,-45.83 242.89,-34.41 257.99,-25.42"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="259.59,-28.55 266.39,-20.43 256.01,-22.53 259.59,-28.55"/>
</a>
</g>
</g>
<!-- Node7 -->
<g id="Node000007" class="node">
<title>Node7</title>
<g id="a_Node000007"><a xlink:title=" ">
<polygon fill="#e0e0e0" stroke="#999999" points="364.38,-19.25 321.38,-19.25 321.38,0 364.38,0 364.38,-19.25"/>
<text text-anchor="middle" x="342.88" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">vector</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node7 -->
<g id="edge6_Node000001_Node000007" class="edge">
<title>Node1&#45;&gt;Node7</title>
<g id="a_edge6_Node000001_Node000007"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M223.59,-54.8C250.39,-44.87 285.32,-31.94 310.44,-22.63"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="311.65,-25.92 319.82,-19.16 309.22,-19.35 311.65,-25.92"/>
<path fill="none" stroke="#63b8ff" d="M182.34,-54.8C203.76,-45.38 231.35,-33.26 252.2,-24.1"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="253.58,-27.32 261.33,-20.09 250.77,-20.91 253.58,-27.32"/>
</a>
</g>
</g>

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -283,7 +283,7 @@ $(function(){initNavTree('de/dde/lowest__common__ancestor_8cpp_source.html','../
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span>}</div>
</div>
<div class="ttc" id="aclassgraph_1_1_graph_html"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph</a></div><div class="ttdef"><b>Definition</b> <a href="../../df/d82/breadth__first__search_8cpp_source.html#l00064">breadth_first_search.cpp:64</a></div></div>
<div class="ttc" id="aclassgraph_1_1_graph_html"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph</a></div><div class="ttdef"><b>Definition</b> <a href="../../df/d82/breadth__first__search_8cpp_source.html#l00063">breadth_first_search.cpp:63</a></div></div>
<div class="ttc" id="aclassgraph_1_1_graph_html_a59940c462861f2fcf4951d1b6c084e6a"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html#a59940c462861f2fcf4951d1b6c084e6a">graph::Graph::neighbors</a></div><div class="ttdeci">std::vector&lt; std::vector&lt; int &gt; &gt; neighbors</div><div class="ttdoc">for each vertex it stores a list indicies of its neighbors</div><div class="ttdef"><b>Definition</b> <a href="#l00077">lowest_common_ancestor.cpp:77</a></div></div>
<div class="ttc" id="aclassgraph_1_1_graph_html_a8839fa14bff19d2deab4a618447c13e5"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html#a8839fa14bff19d2deab4a618447c13e5">graph::Graph::Graph</a></div><div class="ttdeci">Graph(size_t N, const std::vector&lt; std::pair&lt; int, int &gt; &gt; &amp;undirected_edges)</div><div class="ttdoc">Populate the adjacency list for each vertex in the graph. Assumes that evey edge is a pair of valid v...</div><div class="ttdef"><b>Definition</b> <a href="#l00062">lowest_common_ancestor.cpp:62</a></div></div>
<div class="ttc" id="aclassgraph_1_1_graph_html_a8930d1470d132b19e430d1c71f94c904"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html#a8930d1470d132b19e430d1c71f94c904">graph::Graph::number_of_vertices</a></div><div class="ttdeci">int number_of_vertices() const</div><div class="ttdef"><b>Definition</b> <a href="#l00074">lowest_common_ancestor.cpp:74</a></div></div>

View File

@@ -138,11 +138,10 @@ $(function(){initNavTree('df/d82/breadth__first__search_8cpp.html','../../'); in
<code>#include &lt;map&gt;</code><br />
<code>#include &lt;queue&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for breadth_first_search.cpp:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d6/dec/breadth__first__search_8cpp__incl.svg" width="642" height="126"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d6/dec/breadth__first__search_8cpp__incl.svg" width="560" height="126"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
<p><a href="../../df/d82/breadth__first__search_8cpp_source.html">Go to the source code of this file.</a></p>
@@ -209,28 +208,28 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<p>Main function </p>
<p class="definition">Definition at line <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html#l00186">186</a> of file <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html">breadth_first_search.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 186</span> {</div>
<div class="line"><span class="lineno"> 187</span> <a class="code hl_function" href="#a483bb8ccf42aaf7375a83e91490eda1e">tests</a>();</div>
<div class="line"><span class="lineno"> 188</span> <span class="keywordtype">size_t</span> edges = 0;</div>
<div class="line"><span class="lineno"> 189</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Enter the number of edges: &quot;</span>;</div>
<div class="line"><span class="lineno"> 190</span> std::cin &gt;&gt; edges;</div>
<div class="line"><span class="lineno"> 191</span> </div>
<div class="line"><span class="lineno"> 192</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph&lt;int&gt;</a> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a2f67508d5f392b0321772169342c98ad">g</a>;</div>
<div class="line"><span class="lineno"> 193</span> </div>
<div class="line"><span class="lineno"> 194</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Enter space-separated pairs of vertices that form edges: &quot;</span></div>
<div class="line"><span class="lineno"> 195</span> &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 196</span> <span class="keywordflow">while</span> (edges--) {</div>
<div class="line"><span class="lineno"> 197</span> <span class="keywordtype">int</span> u = 0, v = 0;</div>
<div class="line"><span class="lineno"> 198</span> std::cin &gt;&gt; u &gt;&gt; v;</div>
<div class="line"><span class="lineno"> 199</span> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a2f67508d5f392b0321772169342c98ad">g</a>.add_edge(u, v);</div>
<div class="line"><span class="lineno"> 200</span> }</div>
<div class="line"><span class="lineno"> 201</span> </div>
<div class="line"><span class="lineno"> 202</span> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a2f67508d5f392b0321772169342c98ad">g</a>.breadth_first_search(0);</div>
<div class="line"><span class="lineno"> 203</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><span class="lineno"> 204</span>}</div>
<div class="ttc" id="abreadth__first__search_8cpp_html_a483bb8ccf42aaf7375a83e91490eda1e"><div class="ttname"><a href="#a483bb8ccf42aaf7375a83e91490eda1e">tests</a></div><div class="ttdeci">static void tests()</div><div class="ttdef"><b>Definition</b> <a href="../../df/d82/breadth__first__search_8cpp_source.html#l00139">breadth_first_search.cpp:139</a></div></div>
<div class="ttc" id="aclassgraph_1_1_graph_html"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph</a></div><div class="ttdef"><b>Definition</b> <a href="../../df/d82/breadth__first__search_8cpp_source.html#l00064">breadth_first_search.cpp:64</a></div></div>
<p class="definition">Definition at line <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html#l00185">185</a> of file <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html">breadth_first_search.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 185</span> {</div>
<div class="line"><span class="lineno"> 186</span> <a class="code hl_function" href="#a483bb8ccf42aaf7375a83e91490eda1e">tests</a>();</div>
<div class="line"><span class="lineno"> 187</span> <span class="keywordtype">size_t</span> edges = 0;</div>
<div class="line"><span class="lineno"> 188</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Enter the number of edges: &quot;</span>;</div>
<div class="line"><span class="lineno"> 189</span> std::cin &gt;&gt; edges;</div>
<div class="line"><span class="lineno"> 190</span> </div>
<div class="line"><span class="lineno"> 191</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph&lt;int&gt;</a> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a2f67508d5f392b0321772169342c98ad">g</a>;</div>
<div class="line"><span class="lineno"> 192</span> </div>
<div class="line"><span class="lineno"> 193</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Enter space-separated pairs of vertices that form edges: &quot;</span></div>
<div class="line"><span class="lineno"> 194</span> &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 195</span> <span class="keywordflow">while</span> (edges--) {</div>
<div class="line"><span class="lineno"> 196</span> <span class="keywordtype">int</span> u = 0, v = 0;</div>
<div class="line"><span class="lineno"> 197</span> std::cin &gt;&gt; u &gt;&gt; v;</div>
<div class="line"><span class="lineno"> 198</span> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a2f67508d5f392b0321772169342c98ad">g</a>.add_edge(u, v);</div>
<div class="line"><span class="lineno"> 199</span> }</div>
<div class="line"><span class="lineno"> 200</span> </div>
<div class="line"><span class="lineno"> 201</span> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a2f67508d5f392b0321772169342c98ad">g</a>.breadth_first_search(0);</div>
<div class="line"><span class="lineno"> 202</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><span class="lineno"> 203</span>}</div>
<div class="ttc" id="abreadth__first__search_8cpp_html_a483bb8ccf42aaf7375a83e91490eda1e"><div class="ttname"><a href="#a483bb8ccf42aaf7375a83e91490eda1e">tests</a></div><div class="ttdeci">static void tests()</div><div class="ttdef"><b>Definition</b> <a href="../../df/d82/breadth__first__search_8cpp_source.html#l00138">breadth_first_search.cpp:138</a></div></div>
<div class="ttc" id="aclassgraph_1_1_graph_html"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph</a></div><div class="ttdef"><b>Definition</b> <a href="../../df/d82/breadth__first__search_8cpp_source.html#l00063">breadth_first_search.cpp:63</a></div></div>
<div class="ttc" id="acomposite__simpson__rule_8cpp_html_a2f67508d5f392b0321772169342c98ad"><div class="ttname"><a href="../../d4/d18/composite__simpson__rule_8cpp.html#a2f67508d5f392b0321772169342c98ad">numerical_methods::simpson_method::g</a></div><div class="ttdeci">double g(double x)</div><div class="ttdoc">Another test function.</div><div class="ttdef"><b>Definition</b> <a href="../../d4/d18/composite__simpson__rule_8cpp_source.html#l00115">composite_simpson_rule.cpp:115</a></div></div>
</div><!-- fragment -->
</div>
@@ -262,51 +261,51 @@ Functions</h2></td></tr>
<p>Test 2 Begin</p>
<p>Test 3 Begins</p>
<p class="definition">Definition at line <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html#l00139">139</a> of file <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html">breadth_first_search.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 139</span> {</div>
<div class="line"><span class="lineno"> 141</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph&lt;int&gt;</a> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a2f67508d5f392b0321772169342c98ad">g</a>;</div>
<div class="line"><span class="lineno"> 142</span> std::map&lt;int, bool&gt; correct_result;</div>
<div class="line"><span class="lineno"> 143</span> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a2f67508d5f392b0321772169342c98ad">g</a>.add_edge(0, 1);</div>
<div class="line"><span class="lineno"> 144</span> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a2f67508d5f392b0321772169342c98ad">g</a>.add_edge(1, 2);</div>
<div class="line"><span class="lineno"> 145</span> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a2f67508d5f392b0321772169342c98ad">g</a>.add_edge(2, 3);</div>
<div class="line"><span class="lineno"> 146</span> correct_result[0] = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 147</span> correct_result[1] = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 148</span> correct_result[2] = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 149</span> correct_result[3] = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 150</span> </div>
<div class="line"><span class="lineno"> 151</span> std::map&lt;int, bool&gt; returned_result = <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a2f67508d5f392b0321772169342c98ad">g</a>.breadth_first_search(2);</div>
<div class="line"><span class="lineno"> 152</span> </div>
<div class="line"><span class="lineno"> 153</span> assert(returned_result == correct_result);</div>
<div class="line"><span class="lineno"> 154</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Test 1 Passed...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 155</span></div>
<div class="line"><span class="lineno"> 157</span> returned_result = <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a2f67508d5f392b0321772169342c98ad">g</a>.breadth_first_search(0);</div>
<div class="line"><span class="lineno"> 158</span> </div>
<div class="line"><span class="lineno"> 159</span> assert(returned_result == correct_result);</div>
<div class="line"><span class="lineno"> 160</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Test 2 Passed...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 161</span></div>
<div class="line"><span class="lineno"> 163</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph&lt;std::string&gt;</a> g2;</div>
<div class="line"><span class="lineno"> 164</span> </div>
<div class="line"><span class="lineno"> 165</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Gorakhpur&quot;</span>, <span class="stringliteral">&quot;Lucknow&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><span class="lineno"> 166</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Gorakhpur&quot;</span>, <span class="stringliteral">&quot;Kanpur&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><span class="lineno"> 167</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Lucknow&quot;</span>, <span class="stringliteral">&quot;Agra&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><span class="lineno"> 168</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Kanpur&quot;</span>, <span class="stringliteral">&quot;Agra&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><span class="lineno"> 169</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Lucknow&quot;</span>, <span class="stringliteral">&quot;Prayagraj&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><span class="lineno"> 170</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Agra&quot;</span>, <span class="stringliteral">&quot;Noida&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><span class="lineno"> 171</span> </div>
<div class="line"><span class="lineno"> 172</span> std::map&lt;std::string, bool&gt; correct_res;</div>
<div class="line"><span class="lineno"> 173</span> std::map&lt;std::string, bool&gt; returned_res =</div>
<div class="line"><span class="lineno"> 174</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a3755ec9e6a842238c7f4aac10b661981">breadth_first_search</a>(<span class="stringliteral">&quot;Kanpur&quot;</span>);</div>
<div class="line"><span class="lineno"> 175</span> correct_res[<span class="stringliteral">&quot;Gorakhpur&quot;</span>] = <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 176</span> correct_res[<span class="stringliteral">&quot;Lucknow&quot;</span>] = <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 177</span> correct_res[<span class="stringliteral">&quot;Kanpur&quot;</span>] = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 178</span> correct_res[<span class="stringliteral">&quot;Agra&quot;</span>] = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 179</span> correct_res[<span class="stringliteral">&quot;Prayagraj&quot;</span>] = <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 180</span> correct_res[<span class="stringliteral">&quot;Noida&quot;</span>] = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 181</span> assert(correct_res == returned_res);</div>
<div class="line"><span class="lineno"> 182</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Test 3 Passed...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 183</span>}</div>
<div class="ttc" id="aclassgraph_1_1_graph_html_a3755ec9e6a842238c7f4aac10b661981"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html#a3755ec9e6a842238c7f4aac10b661981">graph::Graph::breadth_first_search</a></div><div class="ttdeci">std::map&lt; T, bool &gt; breadth_first_search(T src)</div><div class="ttdef"><b>Definition</b> <a href="../../df/d82/breadth__first__search_8cpp_source.html#l00096">breadth_first_search.cpp:96</a></div></div>
<div class="ttc" id="aclassgraph_1_1_graph_html_a877b2cba40d8d46dde6fb4209effed19"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">graph::Graph::add_edge</a></div><div class="ttdeci">void add_edge(T u, T v, bool bidir=true)</div><div class="ttdef"><b>Definition</b> <a href="../../df/d82/breadth__first__search_8cpp_source.html#l00074">breadth_first_search.cpp:74</a></div></div>
<p class="definition">Definition at line <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html#l00138">138</a> of file <a class="el" href="../../df/d82/breadth__first__search_8cpp_source.html">breadth_first_search.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 138</span> {</div>
<div class="line"><span class="lineno"> 140</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph&lt;int&gt;</a> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a2f67508d5f392b0321772169342c98ad">g</a>;</div>
<div class="line"><span class="lineno"> 141</span> std::map&lt;int, bool&gt; correct_result;</div>
<div class="line"><span class="lineno"> 142</span> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a2f67508d5f392b0321772169342c98ad">g</a>.add_edge(0, 1);</div>
<div class="line"><span class="lineno"> 143</span> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a2f67508d5f392b0321772169342c98ad">g</a>.add_edge(1, 2);</div>
<div class="line"><span class="lineno"> 144</span> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a2f67508d5f392b0321772169342c98ad">g</a>.add_edge(2, 3);</div>
<div class="line"><span class="lineno"> 145</span> correct_result[0] = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 146</span> correct_result[1] = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 147</span> correct_result[2] = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 148</span> correct_result[3] = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 149</span> </div>
<div class="line"><span class="lineno"> 150</span> std::map&lt;int, bool&gt; returned_result = <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a2f67508d5f392b0321772169342c98ad">g</a>.breadth_first_search(2);</div>
<div class="line"><span class="lineno"> 151</span> </div>
<div class="line"><span class="lineno"> 152</span> assert(returned_result == correct_result);</div>
<div class="line"><span class="lineno"> 153</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Test 1 Passed...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 154</span></div>
<div class="line"><span class="lineno"> 156</span> returned_result = <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a2f67508d5f392b0321772169342c98ad">g</a>.breadth_first_search(0);</div>
<div class="line"><span class="lineno"> 157</span> </div>
<div class="line"><span class="lineno"> 158</span> assert(returned_result == correct_result);</div>
<div class="line"><span class="lineno"> 159</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Test 2 Passed...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 160</span></div>
<div class="line"><span class="lineno"> 162</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph&lt;std::string&gt;</a> g2;</div>
<div class="line"><span class="lineno"> 163</span> </div>
<div class="line"><span class="lineno"> 164</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Gorakhpur&quot;</span>, <span class="stringliteral">&quot;Lucknow&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><span class="lineno"> 165</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Gorakhpur&quot;</span>, <span class="stringliteral">&quot;Kanpur&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><span class="lineno"> 166</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Lucknow&quot;</span>, <span class="stringliteral">&quot;Agra&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><span class="lineno"> 167</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Kanpur&quot;</span>, <span class="stringliteral">&quot;Agra&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><span class="lineno"> 168</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Lucknow&quot;</span>, <span class="stringliteral">&quot;Prayagraj&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><span class="lineno"> 169</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Agra&quot;</span>, <span class="stringliteral">&quot;Noida&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><span class="lineno"> 170</span> </div>
<div class="line"><span class="lineno"> 171</span> std::map&lt;std::string, bool&gt; correct_res;</div>
<div class="line"><span class="lineno"> 172</span> std::map&lt;std::string, bool&gt; returned_res =</div>
<div class="line"><span class="lineno"> 173</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a3755ec9e6a842238c7f4aac10b661981">breadth_first_search</a>(<span class="stringliteral">&quot;Kanpur&quot;</span>);</div>
<div class="line"><span class="lineno"> 174</span> correct_res[<span class="stringliteral">&quot;Gorakhpur&quot;</span>] = <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 175</span> correct_res[<span class="stringliteral">&quot;Lucknow&quot;</span>] = <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 176</span> correct_res[<span class="stringliteral">&quot;Kanpur&quot;</span>] = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 177</span> correct_res[<span class="stringliteral">&quot;Agra&quot;</span>] = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 178</span> correct_res[<span class="stringliteral">&quot;Prayagraj&quot;</span>] = <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 179</span> correct_res[<span class="stringliteral">&quot;Noida&quot;</span>] = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 180</span> assert(correct_res == returned_res);</div>
<div class="line"><span class="lineno"> 181</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Test 3 Passed...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 182</span>}</div>
<div class="ttc" id="aclassgraph_1_1_graph_html_a3755ec9e6a842238c7f4aac10b661981"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html#a3755ec9e6a842238c7f4aac10b661981">graph::Graph::breadth_first_search</a></div><div class="ttdeci">std::map&lt; T, bool &gt; breadth_first_search(T src)</div><div class="ttdef"><b>Definition</b> <a href="../../df/d82/breadth__first__search_8cpp_source.html#l00095">breadth_first_search.cpp:95</a></div></div>
<div class="ttc" id="aclassgraph_1_1_graph_html_a877b2cba40d8d46dde6fb4209effed19"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">graph::Graph::add_edge</a></div><div class="ttdeci">void add_edge(T u, T v, bool bidir=true)</div><div class="ttdef"><b>Definition</b> <a href="../../df/d82/breadth__first__search_8cpp_source.html#l00073">breadth_first_search.cpp:73</a></div></div>
</div><!-- fragment -->
</div>
</div>

View File

@@ -132,132 +132,131 @@ $(function(){initNavTree('df/d82/breadth__first__search_8cpp_source.html','../..
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="preprocessor">#include &lt;map&gt;</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="preprocessor">#include &lt;queue&gt;</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a> {</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="comment">/* Class Graph definition */</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="foldopen" id="foldopen00064" data-start="{" data-end="};">
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"><a class="line" href="../../dc/d61/classgraph_1_1_graph.html"> 64</a></span><span class="keyword">class </span>Graph {</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"><a class="line" href="../../dc/d61/classgraph_1_1_graph.html#acebf0505d625b043bb9c8c27c7a8def0"> 69</a></span> std::map&lt;T, std::list&lt;T&gt; &gt; <a class="code hl_variable" href="../../dc/d61/classgraph_1_1_graph.html#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>;</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> Graph() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> ;</div>
<div class="foldopen" id="foldopen00074" data-start="{" data-end="}">
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"><a class="line" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19"> 74</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(T u, T v, <span class="keywordtype">bool</span> bidir = <span class="keyword">true</span>) {</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <a class="code hl_variable" href="../../dc/d61/classgraph_1_1_graph.html#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>[u].push_back(v); <span class="comment">// u--&gt;v edge added</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="keywordflow">if</span> (bidir == <span class="keyword">true</span>) {</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="comment">// if graph is bidirectional</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <a class="code hl_variable" href="../../dc/d61/classgraph_1_1_graph.html#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>[v].push_back(u); <span class="comment">// v--&gt;u edge added</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> }</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> }</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../df/dce/namespacegraph.html">graph</a> {</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="comment">/* Class Graph definition */</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="foldopen" id="foldopen00063" data-start="{" data-end="};">
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"><a class="line" href="../../dc/d61/classgraph_1_1_graph.html"> 63</a></span><span class="keyword">class </span>Graph {</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"><a class="line" href="../../dc/d61/classgraph_1_1_graph.html#acebf0505d625b043bb9c8c27c7a8def0"> 68</a></span> std::map&lt;T, std::list&lt;T&gt; &gt; <a class="code hl_variable" href="../../dc/d61/classgraph_1_1_graph.html#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>;</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> Graph() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> ;</div>
<div class="foldopen" id="foldopen00073" data-start="{" data-end="}">
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"><a class="line" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19"> 73</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(T u, T v, <span class="keywordtype">bool</span> bidir = <span class="keyword">true</span>) {</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <a class="code hl_variable" href="../../dc/d61/classgraph_1_1_graph.html#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>[u].push_back(v); <span class="comment">// u--&gt;v edge added</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="keywordflow">if</span> (bidir == <span class="keyword">true</span>) {</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="comment">// if graph is bidirectional</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <a class="code hl_variable" href="../../dc/d61/classgraph_1_1_graph.html#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>[v].push_back(u); <span class="comment">// v--&gt;u edge added</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> }</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> }</div>
</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span></div>
<div class="foldopen" id="foldopen00096" data-start="{" data-end="}">
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"><a class="line" href="../../dc/d61/classgraph_1_1_graph.html#a3755ec9e6a842238c7f4aac10b661981"> 96</a></span> std::map&lt;T, bool&gt; <a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a3755ec9e6a842238c7f4aac10b661981">breadth_first_search</a>(T src) {</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> std::map&lt;T, bool&gt; visited;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span> &amp;adjlist : <a class="code hl_variable" href="../../dc/d61/classgraph_1_1_graph.html#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>) {</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> visited[adjlist.first] = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span> &amp;<a class="code hl_class" href="../../d5/da1/structnode.html">node</a> : <a class="code hl_variable" href="../../dc/d61/classgraph_1_1_graph.html#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>[adjlist.first]) {</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> visited[<a class="code hl_class" href="../../d5/da1/structnode.html">node</a>] = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> }</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> }</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> std::queue&lt;T&gt; tracker;</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> tracker.push(src);</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> visited[src] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordflow">while</span> (!tracker.empty()) {</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> T <a class="code hl_class" href="../../d5/da1/structnode.html">node</a> = tracker.front();</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> tracker.pop();</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keywordflow">for</span> (T <span class="keyword">const</span> &amp;neighbour : <a class="code hl_variable" href="../../dc/d61/classgraph_1_1_graph.html#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>[<a class="code hl_class" href="../../d5/da1/structnode.html">node</a>]) {</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keywordflow">if</span> (!visited[neighbour]) {</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> tracker.push(neighbour);</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> visited[neighbour] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> }</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> }</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> }</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="keywordflow">return</span> visited;</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> }</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span></div>
<div class="foldopen" id="foldopen00095" data-start="{" data-end="}">
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"><a class="line" href="../../dc/d61/classgraph_1_1_graph.html#a3755ec9e6a842238c7f4aac10b661981"> 95</a></span> std::map&lt;T, bool&gt; <a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a3755ec9e6a842238c7f4aac10b661981">breadth_first_search</a>(T src) {</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> std::map&lt;T, bool&gt; visited;</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span> &amp;adjlist : <a class="code hl_variable" href="../../dc/d61/classgraph_1_1_graph.html#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>) {</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> visited[adjlist.first] = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span> &amp;<a class="code hl_class" href="../../d5/da1/structnode.html">node</a> : <a class="code hl_variable" href="../../dc/d61/classgraph_1_1_graph.html#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>[adjlist.first]) {</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> visited[<a class="code hl_class" href="../../d5/da1/structnode.html">node</a>] = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> }</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> }</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> std::queue&lt;T&gt; tracker;</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> tracker.push(src);</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> visited[src] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordflow">while</span> (!tracker.empty()) {</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> T <a class="code hl_class" href="../../d5/da1/structnode.html">node</a> = tracker.front();</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> tracker.pop();</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordflow">for</span> (T <span class="keyword">const</span> &amp;neighbour : <a class="code hl_variable" href="../../dc/d61/classgraph_1_1_graph.html#acebf0505d625b043bb9c8c27c7a8def0">adjacency_list</a>[<a class="code hl_class" href="../../d5/da1/structnode.html">node</a>]) {</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <span class="keywordflow">if</span> (!visited[neighbour]) {</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> tracker.push(neighbour);</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> visited[neighbour] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> }</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> }</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> }</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordflow">return</span> visited;</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> }</div>
</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span>};</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span>};</div>
</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span><span class="comment">/* Class definition ends */</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span>} <span class="comment">// namespace graph</span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span></div>
<div class="foldopen" id="foldopen00139" data-start="{" data-end="}">
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"><a class="line" href="../../df/d82/breadth__first__search_8cpp.html#a483bb8ccf42aaf7375a83e91490eda1e"> 139</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../df/d82/breadth__first__search_8cpp.html#a483bb8ccf42aaf7375a83e91490eda1e">tests</a>() {</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph&lt;int&gt;</a> g;</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> std::map&lt;int, bool&gt; correct_result;</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> g.add_edge(0, 1);</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> g.add_edge(1, 2);</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> g.add_edge(2, 3);</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> correct_result[0] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> correct_result[1] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> correct_result[2] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> correct_result[3] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> </div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> std::map&lt;int, bool&gt; returned_result = g.breadth_first_search(2);</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> </div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> assert(returned_result == correct_result);</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Test 1 Passed...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span></div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> returned_result = g.breadth_first_search(0);</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> </div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> assert(returned_result == correct_result);</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Test 2 Passed...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph&lt;std::string&gt;</a> g2;</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> </div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Gorakhpur&quot;</span>, <span class="stringliteral">&quot;Lucknow&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Gorakhpur&quot;</span>, <span class="stringliteral">&quot;Kanpur&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Lucknow&quot;</span>, <span class="stringliteral">&quot;Agra&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Kanpur&quot;</span>, <span class="stringliteral">&quot;Agra&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Lucknow&quot;</span>, <span class="stringliteral">&quot;Prayagraj&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Agra&quot;</span>, <span class="stringliteral">&quot;Noida&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> </div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> std::map&lt;std::string, bool&gt; correct_res;</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> std::map&lt;std::string, bool&gt; returned_res =</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a3755ec9e6a842238c7f4aac10b661981">breadth_first_search</a>(<span class="stringliteral">&quot;Kanpur&quot;</span>);</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> correct_res[<span class="stringliteral">&quot;Gorakhpur&quot;</span>] = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> correct_res[<span class="stringliteral">&quot;Lucknow&quot;</span>] = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> correct_res[<span class="stringliteral">&quot;Kanpur&quot;</span>] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> correct_res[<span class="stringliteral">&quot;Agra&quot;</span>] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> correct_res[<span class="stringliteral">&quot;Prayagraj&quot;</span>] = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> correct_res[<span class="stringliteral">&quot;Noida&quot;</span>] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> assert(correct_res == returned_res);</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Test 3 Passed...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span>}</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="comment">/* Class definition ends */</span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span>} <span class="comment">// namespace graph</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span></div>
<div class="foldopen" id="foldopen00138" data-start="{" data-end="}">
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"><a class="line" href="../../df/d82/breadth__first__search_8cpp.html#a483bb8ccf42aaf7375a83e91490eda1e"> 138</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../df/d82/breadth__first__search_8cpp.html#a483bb8ccf42aaf7375a83e91490eda1e">tests</a>() {</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph&lt;int&gt;</a> g;</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> std::map&lt;int, bool&gt; correct_result;</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> g.add_edge(0, 1);</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> g.add_edge(1, 2);</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> g.add_edge(2, 3);</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> correct_result[0] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> correct_result[1] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> correct_result[2] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> correct_result[3] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> </div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> std::map&lt;int, bool&gt; returned_result = g.breadth_first_search(2);</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> </div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> assert(returned_result == correct_result);</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Test 1 Passed...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> returned_result = g.breadth_first_search(0);</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> </div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> assert(returned_result == correct_result);</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Test 2 Passed...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph&lt;std::string&gt;</a> g2;</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> </div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Gorakhpur&quot;</span>, <span class="stringliteral">&quot;Lucknow&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Gorakhpur&quot;</span>, <span class="stringliteral">&quot;Kanpur&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Lucknow&quot;</span>, <span class="stringliteral">&quot;Agra&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Kanpur&quot;</span>, <span class="stringliteral">&quot;Agra&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Lucknow&quot;</span>, <span class="stringliteral">&quot;Prayagraj&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">add_edge</a>(<span class="stringliteral">&quot;Agra&quot;</span>, <span class="stringliteral">&quot;Noida&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> </div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> std::map&lt;std::string, bool&gt; correct_res;</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> std::map&lt;std::string, bool&gt; returned_res =</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> g2.<a class="code hl_function" href="../../dc/d61/classgraph_1_1_graph.html#a3755ec9e6a842238c7f4aac10b661981">breadth_first_search</a>(<span class="stringliteral">&quot;Kanpur&quot;</span>);</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> correct_res[<span class="stringliteral">&quot;Gorakhpur&quot;</span>] = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> correct_res[<span class="stringliteral">&quot;Lucknow&quot;</span>] = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> correct_res[<span class="stringliteral">&quot;Kanpur&quot;</span>] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> correct_res[<span class="stringliteral">&quot;Agra&quot;</span>] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> correct_res[<span class="stringliteral">&quot;Prayagraj&quot;</span>] = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> correct_res[<span class="stringliteral">&quot;Noida&quot;</span>] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> assert(correct_res == returned_res);</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Test 3 Passed...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span>}</div>
</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span></div>
<div class="foldopen" id="foldopen00186" data-start="{" data-end="}">
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"><a class="line" href="../../df/d82/breadth__first__search_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4"> 186</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="../../df/d82/breadth__first__search_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a>() {</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <a class="code hl_function" href="../../df/d82/breadth__first__search_8cpp.html#a483bb8ccf42aaf7375a83e91490eda1e">tests</a>();</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <span class="keywordtype">size_t</span> edges = 0;</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Enter the number of edges: &quot;</span>;</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> std::cin &gt;&gt; edges;</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> </div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph&lt;int&gt;</a> g;</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> </div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Enter space-separated pairs of vertices that form edges: &quot;</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="keywordflow">while</span> (edges--) {</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="keywordtype">int</span> u = 0, v = 0;</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> std::cin &gt;&gt; u &gt;&gt; v;</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> g.add_edge(u, v);</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> }</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> </div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> g.breadth_first_search(0);</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span>}</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span></div>
<div class="foldopen" id="foldopen00185" data-start="{" data-end="}">
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"><a class="line" href="../../df/d82/breadth__first__search_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4"> 185</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="../../df/d82/breadth__first__search_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a>() {</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <a class="code hl_function" href="../../df/d82/breadth__first__search_8cpp.html#a483bb8ccf42aaf7375a83e91490eda1e">tests</a>();</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="keywordtype">size_t</span> edges = 0;</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Enter the number of edges: &quot;</span>;</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> std::cin &gt;&gt; edges;</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> </div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <a class="code hl_class" href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph&lt;int&gt;</a> g;</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> </div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Enter space-separated pairs of vertices that form edges: &quot;</span></div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="keywordflow">while</span> (edges--) {</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="keywordtype">int</span> u = 0, v = 0;</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> std::cin &gt;&gt; u &gt;&gt; v;</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> g.add_edge(u, v);</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> }</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> </div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> g.breadth_first_search(0);</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span>}</div>
</div>
<div class="ttc" id="abreadth__first__search_8cpp_html_a483bb8ccf42aaf7375a83e91490eda1e"><div class="ttname"><a href="../../df/d82/breadth__first__search_8cpp.html#a483bb8ccf42aaf7375a83e91490eda1e">tests</a></div><div class="ttdeci">static void tests()</div><div class="ttdef"><b>Definition</b> <a href="#l00139">breadth_first_search.cpp:139</a></div></div>
<div class="ttc" id="abreadth__first__search_8cpp_html_ae66f6b31b5ad750f1fe042a706a4e3d4"><div class="ttname"><a href="../../df/d82/breadth__first__search_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a></div><div class="ttdeci">int main()</div><div class="ttdef"><b>Definition</b> <a href="#l00186">breadth_first_search.cpp:186</a></div></div>
<div class="ttc" id="aclassgraph_1_1_graph_html"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph</a></div><div class="ttdef"><b>Definition</b> <a href="#l00064">breadth_first_search.cpp:64</a></div></div>
<div class="ttc" id="aclassgraph_1_1_graph_html_a3755ec9e6a842238c7f4aac10b661981"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html#a3755ec9e6a842238c7f4aac10b661981">graph::Graph::breadth_first_search</a></div><div class="ttdeci">std::map&lt; T, bool &gt; breadth_first_search(T src)</div><div class="ttdef"><b>Definition</b> <a href="#l00096">breadth_first_search.cpp:96</a></div></div>
<div class="ttc" id="aclassgraph_1_1_graph_html_a877b2cba40d8d46dde6fb4209effed19"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">graph::Graph::add_edge</a></div><div class="ttdeci">void add_edge(T u, T v, bool bidir=true)</div><div class="ttdef"><b>Definition</b> <a href="#l00074">breadth_first_search.cpp:74</a></div></div>
<div class="ttc" id="aclassgraph_1_1_graph_html_acebf0505d625b043bb9c8c27c7a8def0"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html#acebf0505d625b043bb9c8c27c7a8def0">graph::Graph::adjacency_list</a></div><div class="ttdeci">std::map&lt; T, std::list&lt; T &gt; &gt; adjacency_list</div><div class="ttdef"><b>Definition</b> <a href="#l00069">breadth_first_search.cpp:69</a></div></div>
<div class="ttc" id="abreadth__first__search_8cpp_html_a483bb8ccf42aaf7375a83e91490eda1e"><div class="ttname"><a href="../../df/d82/breadth__first__search_8cpp.html#a483bb8ccf42aaf7375a83e91490eda1e">tests</a></div><div class="ttdeci">static void tests()</div><div class="ttdef"><b>Definition</b> <a href="#l00138">breadth_first_search.cpp:138</a></div></div>
<div class="ttc" id="abreadth__first__search_8cpp_html_ae66f6b31b5ad750f1fe042a706a4e3d4"><div class="ttname"><a href="../../df/d82/breadth__first__search_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a></div><div class="ttdeci">int main()</div><div class="ttdef"><b>Definition</b> <a href="#l00185">breadth_first_search.cpp:185</a></div></div>
<div class="ttc" id="aclassgraph_1_1_graph_html"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html">graph::Graph</a></div><div class="ttdef"><b>Definition</b> <a href="#l00063">breadth_first_search.cpp:63</a></div></div>
<div class="ttc" id="aclassgraph_1_1_graph_html_a3755ec9e6a842238c7f4aac10b661981"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html#a3755ec9e6a842238c7f4aac10b661981">graph::Graph::breadth_first_search</a></div><div class="ttdeci">std::map&lt; T, bool &gt; breadth_first_search(T src)</div><div class="ttdef"><b>Definition</b> <a href="#l00095">breadth_first_search.cpp:95</a></div></div>
<div class="ttc" id="aclassgraph_1_1_graph_html_a877b2cba40d8d46dde6fb4209effed19"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html#a877b2cba40d8d46dde6fb4209effed19">graph::Graph::add_edge</a></div><div class="ttdeci">void add_edge(T u, T v, bool bidir=true)</div><div class="ttdef"><b>Definition</b> <a href="#l00073">breadth_first_search.cpp:73</a></div></div>
<div class="ttc" id="aclassgraph_1_1_graph_html_acebf0505d625b043bb9c8c27c7a8def0"><div class="ttname"><a href="../../dc/d61/classgraph_1_1_graph.html#acebf0505d625b043bb9c8c27c7a8def0">graph::Graph::adjacency_list</a></div><div class="ttdeci">std::map&lt; T, std::list&lt; T &gt; &gt; adjacency_list</div><div class="ttdef"><b>Definition</b> <a href="#l00068">breadth_first_search.cpp:68</a></div></div>
<div class="ttc" id="anamespacegraph_html"><div class="ttname"><a href="../../df/dce/namespacegraph.html">graph</a></div><div class="ttdoc">Graph Algorithms.</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> <a href="../../d3/d26/binary__search__tree_8cpp_source.html#l00011">binary_search_tree.cpp:11</a></div></div>
</div><!-- fragment --></div><!-- contents -->

View File

@@ -152,7 +152,7 @@ $(function(){initNavTree('namespaces.html',''); initResizable(true); });
<tr id="row_21_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="dd/d2e/namespacedata__structures_1_1treap.html" target="_self">treap</a></td><td class="desc">Functions for the <a href="https://en.wikipedia.org/wiki/Treap" target="_blank">Treap</a> algorithm implementation </td></tr>
<tr id="row_22_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="d8/da7/namespacedepth__first__search.html" target="_self">depth_first_search</a></td><td class="desc">Functions for <a href="https://en.wikipedia.org/wiki/Depth-first_search" target="_blank">Depth First Search</a> algorithm </td></tr>
<tr id="row_23_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="de/db4/namespacedisjoint__union.html" target="_self">disjoint_union</a></td><td class="desc">Functions for <a href="https://en.wikipedia.org/wiki/Disjoint_union" target="_blank">Disjoint union</a> implementation </td></tr>
<tr id="row_24_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="dd/dba/namespacedivide__and__conquer.html" target="_self">divide_and_conquer</a></td><td class="desc">For std::vector </td></tr>
<tr id="row_24_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="dd/dba/namespacedivide__and__conquer.html" target="_self">divide_and_conquer</a></td><td class="desc">For IO operations </td></tr>
<tr id="row_25_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="d9/d75/namespacednf__sort.html" target="_self">dnf_sort</a></td><td class="desc">Functions for the <a href="https://en.wikipedia.org/wiki/Dutch_national_flag_problem" target="_blank">DNF sort</a> implementation </td></tr>
<tr id="row_26_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="d0/d65/namespacedouble__hashing.html" target="_self">double_hashing</a></td><td class="desc">An implementation of hash table using <a href="https://en.wikipedia.org/wiki/Double_hashing" target="_blank">double hashing</a> algorithm </td></tr>
<tr id="row_27_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="df/d88/namespacedp.html" target="_self">dp</a></td><td class="desc">For std::vector </td></tr>