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

@@ -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>