Files
C-Plus-Plus/df/dee/class_h_k_graph.html
2025-07-09 10:53:16 +00:00

663 lines
47 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- HTML header for doxygen 1.12.0-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>TheAlgorithms/C++: HKGraph Class Reference</title>
<link rel="icon" href="../../favicon.svg" type="image/x-icon" />
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@xpack-3rd-party/doxygen-awesome-css@2.2.0-1/doxygen-awesome-darkmode-toggle.js"></script>
<script type="text/javascript">
DoxygenAwesomeDarkModeToggle.init()
</script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
window.MathJax = {
options: {
ignoreHtmlClass: 'tex2jax_ignore',
processHtmlClass: 'tex2jax_process'
},
loader: {
load: ['[tex]/ams']
},
tex: {
macros: {},
packages: ['base','configmacros','ams']
}
};
</script>
<script type="text/javascript" id="MathJax-script" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
<link href="../../doxygen-awesome.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../project_logo.png"/></td>
<td id="projectalign">
<div id="projectname">TheAlgorithms/C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">All the algorithms implemented in C++</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
</script>
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('../../',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(function(){initNavTree('df/dee/class_h_k_graph.html','../../','d0/dee/class_h_k_graph-members'); });
</script>
<div id="container">
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">HKGraph Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Represents Bipartite graph for Hopcroft Karp implementation.
<a href="#details">More...</a></p>
<div class="dynheader">
Collaboration diagram for HKGraph:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="../../dc/d9a/class_h_k_graph__coll__graph.svg" width="294" height="286"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<center><span class="legend">[<a target="top" href="../../graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:af02b0c83911070ac6d95fc9905e58aa9" id="r_af02b0c83911070ac6d95fc9905e58aa9"><td class="memItemLeft" align="right" valign="top"><a id="af02b0c83911070ac6d95fc9905e58aa9" name="af02b0c83911070ac6d95fc9905e58aa9"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>HKGraph</b> ()</td></tr>
<tr class="memdesc:af02b0c83911070ac6d95fc9905e58aa9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default Constructor for initialization. <br /></td></tr>
<tr class="memitem:a0da5aa674d3b3e54a38251ee60d7cd64" id="r_a0da5aa674d3b3e54a38251ee60d7cd64"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0da5aa674d3b3e54a38251ee60d7cd64">HKGraph</a> (int <a class="el" href="#a3d9101e3b4598159005fd028b9b0ff74">m</a>, int <a class="el" href="#a6f5a9fdbb83ef731d739ba6707e21c3c">n</a>)</td></tr>
<tr class="memdesc:a0da5aa674d3b3e54a38251ee60d7cd64"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for initialization. <br /></td></tr>
<tr class="memitem:a3b49011c09cf90a116ab53bef61cd95a" id="r_a3b49011c09cf90a116ab53bef61cd95a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3b49011c09cf90a116ab53bef61cd95a">addEdge</a> (int u, int v)</td></tr>
<tr class="memdesc:a3b49011c09cf90a116ab53bef61cd95a"><td class="mdescLeft">&#160;</td><td class="mdescRight">function to add edge from u to v <br /></td></tr>
<tr class="memitem:a7491add14d9fc04f679114ca6d6f0f93" id="r_a7491add14d9fc04f679114ca6d6f0f93"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7491add14d9fc04f679114ca6d6f0f93">bfs</a> ()</td></tr>
<tr class="memdesc:a7491add14d9fc04f679114ca6d6f0f93"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function checks for the possibility of augmented path availability. <br /></td></tr>
<tr class="memitem:ae794950cb3407b6b47d3dc986cf714c0" id="r_ae794950cb3407b6b47d3dc986cf714c0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae794950cb3407b6b47d3dc986cf714c0">dfs</a> (int u)</td></tr>
<tr class="memdesc:ae794950cb3407b6b47d3dc986cf714c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">This functions checks whether an augmenting path is available exists beginning with free vertex u. <br /></td></tr>
<tr class="memitem:a9dbda80d02bdc26c3e8ff7330c9be75d" id="r_a9dbda80d02bdc26c3e8ff7330c9be75d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9dbda80d02bdc26c3e8ff7330c9be75d">hopcroftKarpAlgorithm</a> ()</td></tr>
<tr class="memdesc:a9dbda80d02bdc26c3e8ff7330c9be75d"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function counts the number of augmenting paths between left and right sides of the Bipartite graph. <br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pri-attribs" class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a3d9101e3b4598159005fd028b9b0ff74" id="r_a3d9101e3b4598159005fd028b9b0ff74"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3d9101e3b4598159005fd028b9b0ff74">m</a> {}</td></tr>
<tr class="memdesc:a3d9101e3b4598159005fd028b9b0ff74"><td class="mdescLeft">&#160;</td><td class="mdescRight">m is the number of vertices on left side of Bipartite <a class="el" href="../../da/d9a/class_graph.html">Graph</a> <br /></td></tr>
<tr class="memitem:a6f5a9fdbb83ef731d739ba6707e21c3c" id="r_a6f5a9fdbb83ef731d739ba6707e21c3c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6f5a9fdbb83ef731d739ba6707e21c3c">n</a> {}</td></tr>
<tr class="memdesc:a6f5a9fdbb83ef731d739ba6707e21c3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">n is the number of vertices on right side of Bipartite <a class="el" href="../../da/d9a/class_graph.html">Graph</a> <br /></td></tr>
<tr class="memitem:ae6d069bd16d6eafa6e08c7e5f735eda6" id="r_ae6d069bd16d6eafa6e08c7e5f735eda6"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae6d069bd16d6eafa6e08c7e5f735eda6">NIL</a> {0}</td></tr>
<tr class="memitem:a44742cb9cfecd1a4493970af9b8bbb15" id="r_a44742cb9cfecd1a4493970af9b8bbb15"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a44742cb9cfecd1a4493970af9b8bbb15">INF</a> {INT_MAX}</td></tr>
<tr class="memitem:a35893def7a1c5cd60907b4893117796f" id="r_a35893def7a1c5cd60907b4893117796f"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::list&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a35893def7a1c5cd60907b4893117796f">adj</a></td></tr>
<tr class="memdesc:a35893def7a1c5cd60907b4893117796f"><td class="mdescLeft">&#160;</td><td class="mdescRight">adj[u] stores adjacents of left side and 0 is used for dummy vertex <br /></td></tr>
<tr class="memitem:a86ebff8a70cbfedd05281993d5d1987b" id="r_a86ebff8a70cbfedd05281993d5d1987b"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a86ebff8a70cbfedd05281993d5d1987b">pair_u</a></td></tr>
<tr class="memdesc:a86ebff8a70cbfedd05281993d5d1987b"><td class="mdescLeft">&#160;</td><td class="mdescRight">value of vertex 'u' ranges from 1 to m <br /></td></tr>
<tr class="memitem:a976ee239402cc2726a280e781c706d77" id="r_a976ee239402cc2726a280e781c706d77"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a976ee239402cc2726a280e781c706d77">pair_v</a></td></tr>
<tr class="memdesc:a976ee239402cc2726a280e781c706d77"><td class="mdescLeft">&#160;</td><td class="mdescRight">value of vertex 'v' ranges from 1 to n <br /></td></tr>
<tr class="memitem:a6a0228bbba3818447fcf6b56128b552a" id="r_a6a0228bbba3818447fcf6b56128b552a"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6a0228bbba3818447fcf6b56128b552a">dist</a></td></tr>
<tr class="memdesc:a6a0228bbba3818447fcf6b56128b552a"><td class="mdescLeft">&#160;</td><td class="mdescRight">dist represents the distance between vertex 'u' and vertex 'v' <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Represents Bipartite graph for Hopcroft Karp implementation. </p>
<p class="definition">Definition at line <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00066">66</a> of file <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html">hopcroft_karp.cpp</a>.</p>
</div><a name="doc-constructors" id="doc-constructors"></a><h2 id="header-doc-constructors" class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a0da5aa674d3b3e54a38251ee60d7cd64" name="a0da5aa674d3b3e54a38251ee60d7cd64"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0da5aa674d3b3e54a38251ee60d7cd64">&#9670;&#160;</a></span>HKGraph()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">graph::HKGraph::HKGraph </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>m</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>n</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructor for initialization. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>is the number of vertices on left side of Bipartite <a class="el" href="../../da/d9a/class_graph.html">Graph</a> </td></tr>
<tr><td class="paramname">n</td><td>is the number of vertices on right side of Bipartite <a class="el" href="../../da/d9a/class_graph.html">Graph</a> </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00231">231</a> of file <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html">hopcroft_karp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 231</span> {</div>
<div class="line"><span class="lineno"> 232</span> this-&gt;<a class="code hl_variable" href="#a3d9101e3b4598159005fd028b9b0ff74">m</a> = <a class="code hl_variable" href="#a3d9101e3b4598159005fd028b9b0ff74">m</a>;</div>
<div class="line"><span class="lineno"> 233</span> this-&gt;<a class="code hl_variable" href="#a6f5a9fdbb83ef731d739ba6707e21c3c">n</a> = <a class="code hl_variable" href="#a6f5a9fdbb83ef731d739ba6707e21c3c">n</a>;</div>
<div class="line"><span class="lineno"> 234</span> <a class="code hl_variable" href="#a35893def7a1c5cd60907b4893117796f">adj</a> = std::vector&lt;std::list&lt;int&gt; &gt;(<a class="code hl_variable" href="#a3d9101e3b4598159005fd028b9b0ff74">m</a> + 1);</div>
<div class="line"><span class="lineno"> 235</span>}</div>
<div class="ttc" id="aclass_h_k_graph_html_a35893def7a1c5cd60907b4893117796f"><div class="ttname"><a href="#a35893def7a1c5cd60907b4893117796f">HKGraph::adj</a></div><div class="ttdeci">std::vector&lt; std::list&lt; int &gt; &gt; adj</div><div class="ttdoc">adj[u] stores adjacents of left side and 0 is used for dummy vertex</div><div class="ttdef"><b>Definition</b> <a href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00073">hopcroft_karp.cpp:73</a></div></div>
<div class="ttc" id="aclass_h_k_graph_html_a3d9101e3b4598159005fd028b9b0ff74"><div class="ttname"><a href="#a3d9101e3b4598159005fd028b9b0ff74">HKGraph::m</a></div><div class="ttdeci">int m</div><div class="ttdoc">m is the number of vertices on left side of Bipartite Graph</div><div class="ttdef"><b>Definition</b> <a href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00068">hopcroft_karp.cpp:68</a></div></div>
<div class="ttc" id="aclass_h_k_graph_html_a6f5a9fdbb83ef731d739ba6707e21c3c"><div class="ttname"><a href="#a6f5a9fdbb83ef731d739ba6707e21c3c">HKGraph::n</a></div><div class="ttdeci">int n</div><div class="ttdoc">n is the number of vertices on right side of Bipartite Graph</div><div class="ttdef"><b>Definition</b> <a href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00069">hopcroft_karp.cpp:69</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="a3b49011c09cf90a116ab53bef61cd95a" name="a3b49011c09cf90a116ab53bef61cd95a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3b49011c09cf90a116ab53bef61cd95a">&#9670;&#160;</a></span>addEdge()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void graph::HKGraph::addEdge </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>u</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>v</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>function to add edge from u to v </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">u</td><td>is the position of first vertex </td></tr>
<tr><td class="paramname">v</td><td>is the position of second vertex </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00242">242</a> of file <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html">hopcroft_karp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 243</span>{</div>
<div class="line"><span class="lineno"> 244</span> <a class="code hl_variable" href="#a35893def7a1c5cd60907b4893117796f">adj</a>[u].push_back(v); <span class="comment">// Add v to us list.</span></div>
<div class="line"><span class="lineno"> 245</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a7491add14d9fc04f679114ca6d6f0f93" name="a7491add14d9fc04f679114ca6d6f0f93"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7491add14d9fc04f679114ca6d6f0f93">&#9670;&#160;</a></span>bfs()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool graph::HKGraph::bfs </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function checks for the possibility of augmented path availability. </p>
<dl class="section return"><dt>Returns</dt><dd><span class="tt">true</span> if there is an augmenting path available </dd>
<dd>
<span class="tt">false</span> if there is no augmenting path available </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00133">133</a> of file <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html">hopcroft_karp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 134</span>{</div>
<div class="line"><span class="lineno"> 135</span> std::queue&lt;int&gt; q; <span class="comment">// an integer queue for bfs</span></div>
<div class="line"><span class="lineno"> 136</span> </div>
<div class="line"><span class="lineno"> 137</span> <span class="comment">// First layer of vertices (set distance as 0)</span></div>
<div class="line"><span class="lineno"> 138</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> u = 1; u &lt;= <a class="code hl_variable" href="#a3d9101e3b4598159005fd028b9b0ff74">m</a>; u++)</div>
<div class="line"><span class="lineno"> 139</span> {</div>
<div class="line"><span class="lineno"> 140</span> <span class="comment">// If this is a free vertex, add it to queue</span></div>
<div class="line"><span class="lineno"> 141</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="#a86ebff8a70cbfedd05281993d5d1987b">pair_u</a>[u] == NIL){</div>
<div class="line"><span class="lineno"> 142</span> </div>
<div class="line"><span class="lineno"> 143</span> <a class="code hl_variable" href="#a6a0228bbba3818447fcf6b56128b552a">dist</a>[u] = 0; <span class="comment">// u is not matched so distance is 0</span></div>
<div class="line"><span class="lineno"> 144</span> q.push(u);</div>
<div class="line"><span class="lineno"> 145</span> }</div>
<div class="line"><span class="lineno"> 146</span> </div>
<div class="line"><span class="lineno"> 147</span> <span class="keywordflow">else</span>{</div>
<div class="line"><span class="lineno"> 148</span> <a class="code hl_variable" href="#a6a0228bbba3818447fcf6b56128b552a">dist</a>[u] = INF; <span class="comment">// set distance as infinite so that this vertex is considered next time for availibility</span></div>
<div class="line"><span class="lineno"> 149</span> }</div>
<div class="line"><span class="lineno"> 150</span> }</div>
<div class="line"><span class="lineno"> 151</span> </div>
<div class="line"><span class="lineno"> 152</span> </div>
<div class="line"><span class="lineno"> 153</span> <a class="code hl_variable" href="#a6a0228bbba3818447fcf6b56128b552a">dist</a>[NIL] = INF; <span class="comment">// Initialize distance to NIL as infinite</span></div>
<div class="line"><span class="lineno"> 154</span> </div>
<div class="line"><span class="lineno"> 155</span> <span class="comment">// q is going to contain vertices of left side only.</span></div>
<div class="line"><span class="lineno"> 156</span> <span class="keywordflow">while</span> (!q.empty())</div>
<div class="line"><span class="lineno"> 157</span> {</div>
<div class="line"><span class="lineno"> 158</span> <span class="keywordtype">int</span> u = q.front(); <span class="comment">// dequeue a vertex</span></div>
<div class="line"><span class="lineno"> 159</span> q.pop();</div>
<div class="line"><span class="lineno"> 160</span> </div>
<div class="line"><span class="lineno"> 161</span> <span class="comment">// If this node is not NIL and can provide a shorter path to NIL then</span></div>
<div class="line"><span class="lineno"> 162</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="#a6a0228bbba3818447fcf6b56128b552a">dist</a>[u] &lt; <a class="code hl_variable" href="#a6a0228bbba3818447fcf6b56128b552a">dist</a>[NIL])</div>
<div class="line"><span class="lineno"> 163</span> {</div>
<div class="line"><span class="lineno"> 164</span> <span class="comment">// Get all the adjacent vertices of the dequeued vertex u</span></div>
<div class="line"><span class="lineno"> 165</span> std::list&lt;int&gt;::iterator it;</div>
<div class="line"><span class="lineno"> 166</span> <span class="keywordflow">for</span> (it = <a class="code hl_variable" href="#a35893def7a1c5cd60907b4893117796f">adj</a>[u].begin(); it != <a class="code hl_variable" href="#a35893def7a1c5cd60907b4893117796f">adj</a>[u].end(); ++it)</div>
<div class="line"><span class="lineno"> 167</span> {</div>
<div class="line"><span class="lineno"> 168</span> <span class="keywordtype">int</span> v = *it;</div>
<div class="line"><span class="lineno"> 169</span> </div>
<div class="line"><span class="lineno"> 170</span> <span class="comment">// If pair of v is not considered so far i.e. (v, pair_v[v]) is not yet explored edge.</span></div>
<div class="line"><span class="lineno"> 171</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="#a6a0228bbba3818447fcf6b56128b552a">dist</a>[<a class="code hl_variable" href="#a976ee239402cc2726a280e781c706d77">pair_v</a>[v]] == INF)</div>
<div class="line"><span class="lineno"> 172</span> {</div>
<div class="line"><span class="lineno"> 173</span> <a class="code hl_variable" href="#a6a0228bbba3818447fcf6b56128b552a">dist</a>[<a class="code hl_variable" href="#a976ee239402cc2726a280e781c706d77">pair_v</a>[v]] = <a class="code hl_variable" href="#a6a0228bbba3818447fcf6b56128b552a">dist</a>[u] + 1; </div>
<div class="line"><span class="lineno"> 174</span> q.push(<a class="code hl_variable" href="#a976ee239402cc2726a280e781c706d77">pair_v</a>[v]); <span class="comment">// Consider the pair and push it to queue</span></div>
<div class="line"><span class="lineno"> 175</span> }</div>
<div class="line"><span class="lineno"> 176</span> }</div>
<div class="line"><span class="lineno"> 177</span> }</div>
<div class="line"><span class="lineno"> 178</span> }</div>
<div class="line"><span class="lineno"> 179</span> </div>
<div class="line"><span class="lineno"> 180</span> </div>
<div class="line"><span class="lineno"> 181</span> </div>
<div class="line"><span class="lineno"> 182</span> <span class="keywordflow">return</span> (<a class="code hl_variable" href="#a6a0228bbba3818447fcf6b56128b552a">dist</a>[NIL] != INF); <span class="comment">// If we could come back to NIL using alternating path of distinct vertices then there is an augmenting path available</span></div>
<div class="line"><span class="lineno"> 183</span>}</div>
<div class="ttc" id="aclass_h_k_graph_html_a6a0228bbba3818447fcf6b56128b552a"><div class="ttname"><a href="#a6a0228bbba3818447fcf6b56128b552a">HKGraph::dist</a></div><div class="ttdeci">std::vector&lt; int &gt; dist</div><div class="ttdoc">dist represents the distance between vertex &#39;u&#39; and vertex &#39;v&#39;</div><div class="ttdef"><b>Definition</b> <a href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00077">hopcroft_karp.cpp:77</a></div></div>
<div class="ttc" id="aclass_h_k_graph_html_a86ebff8a70cbfedd05281993d5d1987b"><div class="ttname"><a href="#a86ebff8a70cbfedd05281993d5d1987b">HKGraph::pair_u</a></div><div class="ttdeci">std::vector&lt; int &gt; pair_u</div><div class="ttdoc">value of vertex &#39;u&#39; ranges from 1 to m</div><div class="ttdef"><b>Definition</b> <a href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00075">hopcroft_karp.cpp:75</a></div></div>
<div class="ttc" id="aclass_h_k_graph_html_a976ee239402cc2726a280e781c706d77"><div class="ttname"><a href="#a976ee239402cc2726a280e781c706d77">HKGraph::pair_v</a></div><div class="ttdeci">std::vector&lt; int &gt; pair_v</div><div class="ttdoc">value of vertex &#39;v&#39; ranges from 1 to n</div><div class="ttdef"><b>Definition</b> <a href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00076">hopcroft_karp.cpp:76</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae794950cb3407b6b47d3dc986cf714c0" name="ae794950cb3407b6b47d3dc986cf714c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae794950cb3407b6b47d3dc986cf714c0">&#9670;&#160;</a></span>dfs()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool graph::HKGraph::dfs </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>u</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This functions checks whether an augmenting path is available exists beginning with free vertex u. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">u</td><td>represents position of vertex </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><span class="tt">true</span> if there is an augmenting path beginning with free vertex u </dd>
<dd>
<span class="tt">false</span> if there is no augmenting path beginning with free vertex u </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00191">191</a> of file <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html">hopcroft_karp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 192</span>{</div>
<div class="line"><span class="lineno"> 193</span> <span class="keywordflow">if</span> (u != NIL)</div>
<div class="line"><span class="lineno"> 194</span> {</div>
<div class="line"><span class="lineno"> 195</span> std::list&lt;int&gt;::iterator it;</div>
<div class="line"><span class="lineno"> 196</span> <span class="keywordflow">for</span> (it = <a class="code hl_variable" href="#a35893def7a1c5cd60907b4893117796f">adj</a>[u].begin(); it != <a class="code hl_variable" href="#a35893def7a1c5cd60907b4893117796f">adj</a>[u].end(); ++it)</div>
<div class="line"><span class="lineno"> 197</span> {</div>
<div class="line"><span class="lineno"> 198</span> </div>
<div class="line"><span class="lineno"> 199</span> <span class="keywordtype">int</span> v = *it; <span class="comment">// Adjacent vertex of u</span></div>
<div class="line"><span class="lineno"> 200</span> </div>
<div class="line"><span class="lineno"> 201</span> <span class="comment">// Follow the distances set by BFS search</span></div>
<div class="line"><span class="lineno"> 202</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="#a6a0228bbba3818447fcf6b56128b552a">dist</a>[<a class="code hl_variable" href="#a976ee239402cc2726a280e781c706d77">pair_v</a>[v]] == <a class="code hl_variable" href="#a6a0228bbba3818447fcf6b56128b552a">dist</a>[u] + 1)</div>
<div class="line"><span class="lineno"> 203</span> {</div>
<div class="line"><span class="lineno"> 204</span> <span class="comment">// If dfs for pair of v also return true then new matching possible, store the matching</span></div>
<div class="line"><span class="lineno"> 205</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="../../d8/d69/classgraph_1_1_h_k_graph.html#ae794950cb3407b6b47d3dc986cf714c0">dfs</a>(<a class="code hl_variable" href="#a976ee239402cc2726a280e781c706d77">pair_v</a>[v]) == <span class="keyword">true</span>)</div>
<div class="line"><span class="lineno"> 206</span> { </div>
<div class="line"><span class="lineno"> 207</span> <a class="code hl_variable" href="#a976ee239402cc2726a280e781c706d77">pair_v</a>[v] = u;</div>
<div class="line"><span class="lineno"> 208</span> <a class="code hl_variable" href="#a86ebff8a70cbfedd05281993d5d1987b">pair_u</a>[u] = v;</div>
<div class="line"><span class="lineno"> 209</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 210</span> }</div>
<div class="line"><span class="lineno"> 211</span> }</div>
<div class="line"><span class="lineno"> 212</span> }</div>
<div class="line"><span class="lineno"> 213</span> </div>
<div class="line"><span class="lineno"> 214</span> </div>
<div class="line"><span class="lineno"> 215</span> <a class="code hl_variable" href="#a6a0228bbba3818447fcf6b56128b552a">dist</a>[u] = INF; <span class="comment">// If there is no augmenting path beginning with u then set distance to infinite.</span></div>
<div class="line"><span class="lineno"> 216</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 217</span> }</div>
<div class="line"><span class="lineno"> 218</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 219</span>}</div>
<div class="ttc" id="aclassgraph_1_1_h_k_graph_html_ae794950cb3407b6b47d3dc986cf714c0"><div class="ttname"><a href="../../d8/d69/classgraph_1_1_h_k_graph.html#ae794950cb3407b6b47d3dc986cf714c0">graph::HKGraph::dfs</a></div><div class="ttdeci">bool dfs(int u)</div><div class="ttdoc">This functions checks whether an augmenting path is available exists beginning with free vertex u.</div><div class="ttdef"><b>Definition</b> <a href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00191">hopcroft_karp.cpp:191</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a9dbda80d02bdc26c3e8ff7330c9be75d" name="a9dbda80d02bdc26c3e8ff7330c9be75d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9dbda80d02bdc26c3e8ff7330c9be75d">&#9670;&#160;</a></span>hopcroftKarpAlgorithm()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int graph::HKGraph::hopcroftKarpAlgorithm </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function counts the number of augmenting paths between left and right sides of the Bipartite graph. </p>
<dl class="section return"><dt>Returns</dt><dd>size of maximum matching </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00095">95</a> of file <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html">hopcroft_karp.cpp</a>.</p>
<div class="fragment"><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> <span class="comment">// pair_u[u] stores pair of u in matching on left side of Bipartite Graph.</span></div>
<div class="line"><span class="lineno"> 99</span> <span class="comment">// If u doesn&#39;t have any pair, then pair_u[u] is NIL</span></div>
<div class="line"><span class="lineno"> 100</span> <a class="code hl_variable" href="#a86ebff8a70cbfedd05281993d5d1987b">pair_u</a> = std::vector&lt;int&gt;(<a class="code hl_variable" href="#a3d9101e3b4598159005fd028b9b0ff74">m</a> + 1,NIL); </div>
<div class="line"><span class="lineno"> 101</span> </div>
<div class="line"><span class="lineno"> 102</span> <span class="comment">// pair_v[v] stores pair of v in matching on right side of Biparite Graph.</span></div>
<div class="line"><span class="lineno"> 103</span> <span class="comment">// If v doesn&#39;t have any pair, then pair_u[v] is NIL</span></div>
<div class="line"><span class="lineno"> 104</span> <a class="code hl_variable" href="#a976ee239402cc2726a280e781c706d77">pair_v</a> = std::vector&lt;int&gt;(<a class="code hl_variable" href="#a6f5a9fdbb83ef731d739ba6707e21c3c">n</a> + 1,NIL); </div>
<div class="line"><span class="lineno"> 105</span> </div>
<div class="line"><span class="lineno"> 106</span> <a class="code hl_variable" href="#a6a0228bbba3818447fcf6b56128b552a">dist</a> = std::vector&lt;int&gt;(<a class="code hl_variable" href="#a3d9101e3b4598159005fd028b9b0ff74">m</a> + 1); <span class="comment">// dist[u] stores distance of left side vertices</span></div>
<div class="line"><span class="lineno"> 107</span> </div>
<div class="line"><span class="lineno"> 108</span> <span class="keywordtype">int</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a> = 0; <span class="comment">// Initialize result</span></div>
<div class="line"><span class="lineno"> 109</span> </div>
<div class="line"><span class="lineno"> 110</span> <span class="comment">// Keep updating the result while there is an augmenting path possible.</span></div>
<div class="line"><span class="lineno"> 111</span> <span class="keywordflow">while</span> (<a class="code hl_function" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a7491add14d9fc04f679114ca6d6f0f93">bfs</a>())</div>
<div class="line"><span class="lineno"> 112</span> {</div>
<div class="line"><span class="lineno"> 113</span> <span class="comment">// Find a free vertex to check for a matching</span></div>
<div class="line"><span class="lineno"> 114</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> u = 1; u &lt;= <a class="code hl_variable" href="#a3d9101e3b4598159005fd028b9b0ff74">m</a>; u++){</div>
<div class="line"><span class="lineno"> 115</span> </div>
<div class="line"><span class="lineno"> 116</span> <span class="comment">// If current vertex is free and there is</span></div>
<div class="line"><span class="lineno"> 117</span> <span class="comment">// an augmenting path from current vertex</span></div>
<div class="line"><span class="lineno"> 118</span> <span class="comment">// then increment the result</span></div>
<div class="line"><span class="lineno"> 119</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="#a86ebff8a70cbfedd05281993d5d1987b">pair_u</a>[u] == NIL &amp;&amp; <a class="code hl_function" href="../../d8/d69/classgraph_1_1_h_k_graph.html#ae794950cb3407b6b47d3dc986cf714c0">dfs</a>(u)){</div>
<div class="line"><span class="lineno"> 120</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>++;</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> }</div>
<div class="line"><span class="lineno"> 124</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"> 125</span>}</div>
<div class="ttc" id="aclassgraph_1_1_h_k_graph_html_a7491add14d9fc04f679114ca6d6f0f93"><div class="ttname"><a href="../../d8/d69/classgraph_1_1_h_k_graph.html#a7491add14d9fc04f679114ca6d6f0f93">graph::HKGraph::bfs</a></div><div class="ttdeci">bool bfs()</div><div class="ttdoc">This function checks for the possibility of augmented path availability.</div><div class="ttdef"><b>Definition</b> <a href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00133">hopcroft_karp.cpp:133</a></div></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><!-- fragment -->
</div>
</div>
<a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="a35893def7a1c5cd60907b4893117796f" name="a35893def7a1c5cd60907b4893117796f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a35893def7a1c5cd60907b4893117796f">&#9670;&#160;</a></span>adj</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;std::list&lt;int&gt; &gt; graph::HKGraph::adj</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>adj[u] stores adjacents of left side and 0 is used for dummy vertex </p>
<p class="definition">Definition at line <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00073">73</a> of file <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html">hopcroft_karp.cpp</a>.</p>
</div>
</div>
<a id="a6a0228bbba3818447fcf6b56128b552a" name="a6a0228bbba3818447fcf6b56128b552a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a0228bbba3818447fcf6b56128b552a">&#9670;&#160;</a></span>dist</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;int&gt; graph::HKGraph::dist</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>dist represents the distance between vertex 'u' and vertex 'v' </p>
<p class="definition">Definition at line <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00077">77</a> of file <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html">hopcroft_karp.cpp</a>.</p>
</div>
</div>
<a id="a44742cb9cfecd1a4493970af9b8bbb15" name="a44742cb9cfecd1a4493970af9b8bbb15"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a44742cb9cfecd1a4493970af9b8bbb15">&#9670;&#160;</a></span>INF</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const int graph::HKGraph::INF {INT_MAX}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00071">71</a> of file <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html">hopcroft_karp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 71</span>{INT_MAX};</div>
</div><!-- fragment -->
</div>
</div>
<a id="a3d9101e3b4598159005fd028b9b0ff74" name="a3d9101e3b4598159005fd028b9b0ff74"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d9101e3b4598159005fd028b9b0ff74">&#9670;&#160;</a></span>m</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int graph::HKGraph::m {}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>m is the number of vertices on left side of Bipartite <a class="el" href="../../da/d9a/class_graph.html">Graph</a> </p>
<p class="definition">Definition at line <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00068">68</a> of file <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html">hopcroft_karp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 68</span>{}; </div>
</div><!-- fragment -->
</div>
</div>
<a id="a6f5a9fdbb83ef731d739ba6707e21c3c" name="a6f5a9fdbb83ef731d739ba6707e21c3c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6f5a9fdbb83ef731d739ba6707e21c3c">&#9670;&#160;</a></span>n</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int graph::HKGraph::n {}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>n is the number of vertices on right side of Bipartite <a class="el" href="../../da/d9a/class_graph.html">Graph</a> </p>
<p class="definition">Definition at line <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00069">69</a> of file <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html">hopcroft_karp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 69</span>{}; </div>
</div><!-- fragment -->
</div>
</div>
<a id="ae6d069bd16d6eafa6e08c7e5f735eda6" name="ae6d069bd16d6eafa6e08c7e5f735eda6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae6d069bd16d6eafa6e08c7e5f735eda6">&#9670;&#160;</a></span>NIL</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const int graph::HKGraph::NIL {0}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00070">70</a> of file <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html">hopcroft_karp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 70</span>{0};</div>
</div><!-- fragment -->
</div>
</div>
<a id="a86ebff8a70cbfedd05281993d5d1987b" name="a86ebff8a70cbfedd05281993d5d1987b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86ebff8a70cbfedd05281993d5d1987b">&#9670;&#160;</a></span>pair_u</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;int&gt; graph::HKGraph::pair_u</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>value of vertex 'u' ranges from 1 to m </p>
<p class="definition">Definition at line <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00075">75</a> of file <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html">hopcroft_karp.cpp</a>.</p>
</div>
</div>
<a id="a976ee239402cc2726a280e781c706d77" name="a976ee239402cc2726a280e781c706d77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a976ee239402cc2726a280e781c706d77">&#9670;&#160;</a></span>pair_v</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;int&gt; graph::HKGraph::pair_v</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>value of vertex 'v' ranges from 1 to n </p>
<p class="definition">Definition at line <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html#l00076">76</a> of file <a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html">hopcroft_karp.cpp</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>graph/<a class="el" href="../../d1/d9a/hopcroft__karp_8cpp_source.html">hopcroft_karp.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a href="../../df/dee/class_h_k_graph.html">HKGraph</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0 </li>
</ul>
</div>
</body>
</html>