Files
C-Plus-Plus/d8/d69/classgraph_1_1_h_k_graph.html
2021-09-03 19:56:17 +00:00

463 lines
46 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.
<!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">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: graph::HKGraph Class Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<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/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
<link href="../../doxygen.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 style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</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">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('d8/d69/classgraph_1_1_h_k_graph.html','../../'); initResizable(); });
/* @license-end */
</script>
<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">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="../../dc/dea/classgraph_1_1_h_k_graph-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">graph::HKGraph Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Represents Bipartite graph for Hopcroft Karp implementation.
<a href="../../d8/d69/classgraph_1_1_h_k_graph.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem: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="separator:af02b0c83911070ac6d95fc9905e58aa9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0da5aa674d3b3e54a38251ee60d7cd64"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a0da5aa674d3b3e54a38251ee60d7cd64">HKGraph</a> (int <a class="el" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a3d9101e3b4598159005fd028b9b0ff74">m</a>, int <a class="el" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a6f5a9fdbb83ef731d739ba6707e21c3c">n</a>)</td></tr>
<tr class="memdesc:a0da5aa674d3b3e54a38251ee60d7cd64"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for initialization. <a href="../../d8/d69/classgraph_1_1_h_k_graph.html#a0da5aa674d3b3e54a38251ee60d7cd64">More...</a><br /></td></tr>
<tr class="separator:a0da5aa674d3b3e54a38251ee60d7cd64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b49011c09cf90a116ab53bef61cd95a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d69/classgraph_1_1_h_k_graph.html#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 <a href="../../d8/d69/classgraph_1_1_h_k_graph.html#a3b49011c09cf90a116ab53bef61cd95a">More...</a><br /></td></tr>
<tr class="separator:a3b49011c09cf90a116ab53bef61cd95a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7491add14d9fc04f679114ca6d6f0f93"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d69/classgraph_1_1_h_k_graph.html#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. <a href="../../d8/d69/classgraph_1_1_h_k_graph.html#a7491add14d9fc04f679114ca6d6f0f93">More...</a><br /></td></tr>
<tr class="separator:a7491add14d9fc04f679114ca6d6f0f93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae794950cb3407b6b47d3dc986cf714c0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d69/classgraph_1_1_h_k_graph.html#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. <a href="../../d8/d69/classgraph_1_1_h_k_graph.html#ae794950cb3407b6b47d3dc986cf714c0">More...</a><br /></td></tr>
<tr class="separator:ae794950cb3407b6b47d3dc986cf714c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9dbda80d02bdc26c3e8ff7330c9be75d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d69/classgraph_1_1_h_k_graph.html#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. <a href="../../d8/d69/classgraph_1_1_h_k_graph.html#a9dbda80d02bdc26c3e8ff7330c9be75d">More...</a><br /></td></tr>
<tr class="separator:a9dbda80d02bdc26c3e8ff7330c9be75d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a3d9101e3b4598159005fd028b9b0ff74"><td class="memItemLeft" align="right" valign="top"><a id="a3d9101e3b4598159005fd028b9b0ff74" name="a3d9101e3b4598159005fd028b9b0ff74"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>m</b> {}</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="../../dc/d61/classgraph_1_1_graph.html">Graph</a> <br /></td></tr>
<tr class="separator:a3d9101e3b4598159005fd028b9b0ff74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f5a9fdbb83ef731d739ba6707e21c3c"><td class="memItemLeft" align="right" valign="top"><a id="a6f5a9fdbb83ef731d739ba6707e21c3c" name="a6f5a9fdbb83ef731d739ba6707e21c3c"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>n</b> {}</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="../../dc/d61/classgraph_1_1_graph.html">Graph</a> <br /></td></tr>
<tr class="separator:a6f5a9fdbb83ef731d739ba6707e21c3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6d069bd16d6eafa6e08c7e5f735eda6"><td class="memItemLeft" align="right" valign="top"><a id="ae6d069bd16d6eafa6e08c7e5f735eda6" name="ae6d069bd16d6eafa6e08c7e5f735eda6"></a>
const int&#160;</td><td class="memItemRight" valign="bottom"><b>NIL</b> {0}</td></tr>
<tr class="separator:ae6d069bd16d6eafa6e08c7e5f735eda6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44742cb9cfecd1a4493970af9b8bbb15"><td class="memItemLeft" align="right" valign="top"><a id="a44742cb9cfecd1a4493970af9b8bbb15" name="a44742cb9cfecd1a4493970af9b8bbb15"></a>
const int&#160;</td><td class="memItemRight" valign="bottom"><b>INF</b> {INT_MAX}</td></tr>
<tr class="separator:a44742cb9cfecd1a4493970af9b8bbb15"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a35893def7a1c5cd60907b4893117796f"><td class="memItemLeft" align="right" valign="top"><a id="a35893def7a1c5cd60907b4893117796f" name="a35893def7a1c5cd60907b4893117796f"></a>
<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/list.html">std::list</a>&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>adj</b></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="separator:a35893def7a1c5cd60907b4893117796f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86ebff8a70cbfedd05281993d5d1987b"><td class="memItemLeft" align="right" valign="top"><a id="a86ebff8a70cbfedd05281993d5d1987b" name="a86ebff8a70cbfedd05281993d5d1987b"></a>
<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>pair_u</b></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="separator:a86ebff8a70cbfedd05281993d5d1987b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a976ee239402cc2726a280e781c706d77"><td class="memItemLeft" align="right" valign="top"><a id="a976ee239402cc2726a280e781c706d77" name="a976ee239402cc2726a280e781c706d77"></a>
<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>pair_v</b></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="separator:a976ee239402cc2726a280e781c706d77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a0228bbba3818447fcf6b56128b552a"><td class="memItemLeft" align="right" valign="top"><a id="a6a0228bbba3818447fcf6b56128b552a" name="a6a0228bbba3818447fcf6b56128b552a"></a>
<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>dist</b></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>
<tr class="separator:a6a0228bbba3818447fcf6b56128b552a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p >Represents Bipartite graph for Hopcroft Karp implementation. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a0da5aa674d3b3e54a38251ee60d7cd64" name="a0da5aa674d3b3e54a38251ee60d7cd64"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0da5aa674d3b3e54a38251ee60d7cd64">&#9670;&nbsp;</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&#160;</td>
<td class="paramname"><em>m</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>n</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></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="../../dc/d61/classgraph_1_1_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="../../dc/d61/classgraph_1_1_graph.html">Graph</a> </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> {</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> this-&gt;<a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a3d9101e3b4598159005fd028b9b0ff74">m</a> = <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a3d9101e3b4598159005fd028b9b0ff74">m</a>;</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> this-&gt;<a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a6f5a9fdbb83ef731d739ba6707e21c3c">n</a> = <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a6f5a9fdbb83ef731d739ba6707e21c3c">n</a>;</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a35893def7a1c5cd60907b4893117796f">adj</a> = <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::list&lt;int&gt;</a> &gt;(<a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a3d9101e3b4598159005fd028b9b0ff74">m</a> + 1);</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span>}</div>
<div class="ttc" id="aclassgraph_1_1_h_k_graph_html_a35893def7a1c5cd60907b4893117796f"><div class="ttname"><a href="../../d8/d69/classgraph_1_1_h_k_graph.html#a35893def7a1c5cd60907b4893117796f">graph::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> hopcroft_karp.cpp:73</div></div>
<div class="ttc" id="aclassgraph_1_1_h_k_graph_html_a3d9101e3b4598159005fd028b9b0ff74"><div class="ttname"><a href="../../d8/d69/classgraph_1_1_h_k_graph.html#a3d9101e3b4598159005fd028b9b0ff74">graph::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> hopcroft_karp.cpp:68</div></div>
<div class="ttc" id="aclassgraph_1_1_h_k_graph_html_a6f5a9fdbb83ef731d739ba6707e21c3c"><div class="ttname"><a href="../../d8/d69/classgraph_1_1_h_k_graph.html#a6f5a9fdbb83ef731d739ba6707e21c3c">graph::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> hopcroft_karp.cpp:69</div></div>
<div class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a></div></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a3b49011c09cf90a116ab53bef61cd95a" name="a3b49011c09cf90a116ab53bef61cd95a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3b49011c09cf90a116ab53bef61cd95a">&#9670;&nbsp;</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&#160;</td>
<td class="paramname"><em>u</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>v</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></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>
<div class="fragment"><div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span>{</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a35893def7a1c5cd60907b4893117796f">adj</a>[u].push_back(v); <span class="comment">// Add v to us list.</span></div>
<div class="line"><a id="l00245" name="l00245"></a><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;&nbsp;</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"></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><code>true</code> if there is an augmenting path available </dd>
<dd>
<code>false</code> if there is no augmenting path available </dd></dl>
<div class="fragment"><div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span>{</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/queue.html">std::queue&lt;int&gt;</a> q; <span class="comment">// an integer queue for bfs</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> </div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="comment">// First layer of vertices (set distance as 0)</span></div>
<div class="line"><a id="l00138" name="l00138"></a><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="../../d8/d69/classgraph_1_1_h_k_graph.html#a3d9101e3b4598159005fd028b9b0ff74">m</a>; u++)</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="comment">// If this is a free vertex, add it to queue</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a86ebff8a70cbfedd05281993d5d1987b">pair_u</a>[u] == NIL){</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> </div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a6a0228bbba3818447fcf6b56128b552a">dist</a>[u] = 0; <span class="comment">// u is not matched so distance is 0</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> q.push(u);</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> </div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keywordflow">else</span>{</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#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"><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> }</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> </div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a6a0228bbba3818447fcf6b56128b552a">dist</a>[NIL] = INF; <span class="comment">// Initialize distance to NIL as infinite</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> </div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="comment">// q is going to contain vertices of left side only.</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keywordflow">while</span> (!q.empty())</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> <span class="keywordtype">int</span> u = q.front(); <span class="comment">// dequeue a vertex</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> q.pop();</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="comment">// If this node is not NIL and can provide a shorter path to NIL then</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a6a0228bbba3818447fcf6b56128b552a">dist</a>[u] &lt; <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a6a0228bbba3818447fcf6b56128b552a">dist</a>[NIL])</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> <span class="comment">// Get all the adjacent vertices of the dequeued vertex u</span></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/list.html">std::list&lt;int&gt;::iterator</a> it;</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="keywordflow">for</span> (it = <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a35893def7a1c5cd60907b4893117796f">adj</a>[u].<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/begin.html">begin</a>(); it != <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a35893def7a1c5cd60907b4893117796f">adj</a>[u].end(); ++it)</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="keywordtype">int</span> v = *it;</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> </div>
<div class="line"><a id="l00170" name="l00170"></a><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"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a6a0228bbba3818447fcf6b56128b552a">dist</a>[<a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a976ee239402cc2726a280e781c706d77">pair_v</a>[v]] == INF)</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> {</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a6a0228bbba3818447fcf6b56128b552a">dist</a>[<a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a976ee239402cc2726a280e781c706d77">pair_v</a>[v]] = <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a6a0228bbba3818447fcf6b56128b552a">dist</a>[u] + 1; </div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> q.push(<a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a976ee239402cc2726a280e781c706d77">pair_v</a>[v]); <span class="comment">// Consider the pair and push it to queue</span></div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> }</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> }</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> }</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> }</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> </div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</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> <span class="keywordflow">return</span> (<a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#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"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span>}</div>
<div class="ttc" id="abegin_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/iterator/begin.html">std::begin</a></div><div class="ttdeci">T begin(T... args)</div></div>
<div class="ttc" id="aclassgraph_1_1_h_k_graph_html_a6a0228bbba3818447fcf6b56128b552a"><div class="ttname"><a href="../../d8/d69/classgraph_1_1_h_k_graph.html#a6a0228bbba3818447fcf6b56128b552a">graph::HKGraph::dist</a></div><div class="ttdeci">std::vector&lt; int &gt; dist</div><div class="ttdoc">dist represents the distance between vertex 'u' and vertex 'v'</div><div class="ttdef"><b>Definition:</b> hopcroft_karp.cpp:77</div></div>
<div class="ttc" id="aclassgraph_1_1_h_k_graph_html_a86ebff8a70cbfedd05281993d5d1987b"><div class="ttname"><a href="../../d8/d69/classgraph_1_1_h_k_graph.html#a86ebff8a70cbfedd05281993d5d1987b">graph::HKGraph::pair_u</a></div><div class="ttdeci">std::vector&lt; int &gt; pair_u</div><div class="ttdoc">value of vertex 'u' ranges from 1 to m</div><div class="ttdef"><b>Definition:</b> hopcroft_karp.cpp:75</div></div>
<div class="ttc" id="aclassgraph_1_1_h_k_graph_html_a976ee239402cc2726a280e781c706d77"><div class="ttname"><a href="../../d8/d69/classgraph_1_1_h_k_graph.html#a976ee239402cc2726a280e781c706d77">graph::HKGraph::pair_v</a></div><div class="ttdeci">std::vector&lt; int &gt; pair_v</div><div class="ttdoc">value of vertex 'v' ranges from 1 to n</div><div class="ttdef"><b>Definition:</b> hopcroft_karp.cpp:76</div></div>
<div class="ttc" id="alist_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/list.html">std::list</a></div></div>
<div class="ttc" id="aqueue_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/queue.html">std::queue</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae794950cb3407b6b47d3dc986cf714c0" name="ae794950cb3407b6b47d3dc986cf714c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae794950cb3407b6b47d3dc986cf714c0">&#9670;&nbsp;</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&#160;</td>
<td class="paramname"><em>u</em></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><code>true</code> if there is an augmenting path beginning with free vertex u </dd>
<dd>
<code>false</code> if there is no augmenting path beginning with free vertex u </dd></dl>
<div class="fragment"><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> <span class="keywordflow">if</span> (u != NIL)</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> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/list.html">std::list&lt;int&gt;::iterator</a> it;</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="keywordflow">for</span> (it = <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a35893def7a1c5cd60907b4893117796f">adj</a>[u].<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/iterator/begin.html">begin</a>(); it != <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a35893def7a1c5cd60907b4893117796f">adj</a>[u].end(); ++it)</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> {</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> </div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> <span class="keywordtype">int</span> v = *it; <span class="comment">// Adjacent vertex of u</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> <span class="comment">// Follow the distances set by BFS search</span></div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a6a0228bbba3818447fcf6b56128b552a">dist</a>[<a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a976ee239402cc2726a280e781c706d77">pair_v</a>[v]] == <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a6a0228bbba3818447fcf6b56128b552a">dist</a>[u] + 1)</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> {</div>
<div class="line"><a id="l00204" name="l00204"></a><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"><a id="l00205" name="l00205"></a><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="../../d8/d69/classgraph_1_1_h_k_graph.html#a976ee239402cc2726a280e781c706d77">pair_v</a>[v]) == <span class="keyword">true</span>)</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> <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a976ee239402cc2726a280e781c706d77">pair_v</a>[v] = u;</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a86ebff8a70cbfedd05281993d5d1987b">pair_u</a>[u] = v;</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> }</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> }</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> }</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> </div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> </div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#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"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> }</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00219" name="l00219"></a><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> hopcroft_karp.cpp:191</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d8/d69/classgraph_1_1_h_k_graph_ae794950cb3407b6b47d3dc986cf714c0_cgraph.svg" width="155" height="62"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<a id="a9dbda80d02bdc26c3e8ff7330c9be75d" name="a9dbda80d02bdc26c3e8ff7330c9be75d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9dbda80d02bdc26c3e8ff7330c9be75d">&#9670;&nbsp;</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"></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>
<div class="fragment"><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> <span class="comment">// pair_u[u] stores pair of u in matching on left side of Bipartite Graph.</span></div>
<div class="line"><a id="l00099" name="l00099"></a><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"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a86ebff8a70cbfedd05281993d5d1987b">pair_u</a> = <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a>(<a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a3d9101e3b4598159005fd028b9b0ff74">m</a> + 1,NIL); </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> <span class="comment">// pair_v[v] stores pair of v in matching on right side of Biparite Graph.</span></div>
<div class="line"><a id="l00103" name="l00103"></a><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"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a976ee239402cc2726a280e781c706d77">pair_v</a> = <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a>(<a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a6f5a9fdbb83ef731d739ba6707e21c3c">n</a> + 1,NIL); </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> <a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a6a0228bbba3818447fcf6b56128b552a">dist</a> = <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;int&gt;</a>(<a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#a3d9101e3b4598159005fd028b9b0ff74">m</a> + 1); <span class="comment">// dist[u] stores distance of left side vertices</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> </div>
<div class="line"><a id="l00108" name="l00108"></a><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"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> </div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="comment">// Keep updating the result while there is an augmenting path possible.</span></div>
<div class="line"><a id="l00111" name="l00111"></a><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"><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="comment">// Find a free vertex to check for a matching</span></div>
<div class="line"><a id="l00114" name="l00114"></a><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="../../d8/d69/classgraph_1_1_h_k_graph.html#a3d9101e3b4598159005fd028b9b0ff74">m</a>; u++){</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="comment">// If current vertex is free and there is</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="comment">// an augmenting path from current vertex</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="comment">// then increment the result</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="../../d8/d69/classgraph_1_1_h_k_graph.html#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"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>++;</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> }</div>
<div class="line"><a id="l00124" name="l00124"></a><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"><a id="l00125" name="l00125"></a><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> hopcroft_karp.cpp:133</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> fibonacci_sum.cpp:76</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d8/d69/classgraph_1_1_h_k_graph_a9dbda80d02bdc26c3e8ff7330c9be75d_cgraph.svg" width="378" height="112"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</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.html">hopcroft_karp.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../df/dce/namespacegraph.html">graph</a></li><li class="navelem"><a class="el" href="../../d8/d69/classgraph_1_1_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.9.2 </li>
</ul>
</div>
</body>
</html>