Files
ortools-clone/docs/cpp_graph/classutil_1_1StaticGraph.html
Laurent Perron 6230c8e7a4 polish cpp doc
2019-07-12 13:25:23 -07:00

1280 lines
70 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>OR-Tools</title>
<meta http-equiv="Content-Type" content="text/html;"/>
<meta charset="utf-8"/>
<!--<link rel='stylesheet' type='text/css' href="https://fonts.googleapis.com/css?family=Ubuntu:400,700,400italic"/>-->
<link rel="stylesheet" type="text/css" href="ortools.css" title="default" media="screen,print" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
</head>
<body>
<div id="banner-container">
<div id="banner">
<span id="sfml">OR-Tools 7.2</span>
</div>
</div>
<link rel="icon" href="https://developers.google.com/optimization/images/orLogo.png">
<div id="content">
<!-- Generated by Doxygen 1.8.15 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
</ul>
</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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classutil_1_1StaticGraph.html','');});
/* @license-end */
</script>
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classutil_1_1StaticGraph-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">util::StaticGraph&lt; NodeIndexType, ArcIndexType &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename NodeIndexType = int32, typename ArcIndexType = int32&gt;<br />
class util::StaticGraph&lt; NodeIndexType, ArcIndexType &gt;</h3>
<p>Most efficient implementation of a graph without reverse arcs: </p>
<ul>
<li><a class="el" href="classutil_1_1StaticGraph.html#a0b8444bcee7138b5702880a882d29283">Build()</a> needs to be called after the arc and node have been added.</li>
<li>The graph is really compact memory wise: ArcIndexType * <a class="el" href="classutil_1_1BaseGraph.html#a463d57480c9563a7a707c5d0928c9946" title="Capacity reserved for future nodes, always &gt;= num_nodes_.">node_capacity()</a> + 2 * NodeIndexType * <a class="el" href="classutil_1_1BaseGraph.html#a92ffd852b2ab2e5241f9832e71a2de71" title="Capacity reserved for future arcs, always &gt;= num_arcs_.">arc_capacity()</a>, but when <a class="el" href="classutil_1_1StaticGraph.html#a0b8444bcee7138b5702880a882d29283">Build()</a> is called it uses a temporary extra space of ArcIndexType * <a class="el" href="classutil_1_1BaseGraph.html#a92ffd852b2ab2e5241f9832e71a2de71" title="Capacity reserved for future arcs, always &gt;= num_arcs_.">arc_capacity()</a>.</li>
<li>The construction is really fast.</li>
</ul>
<p>NOTE(user): if the need arises for very-well compressed graphs, we could shave NodeIndexType * <a class="el" href="classutil_1_1BaseGraph.html#a92ffd852b2ab2e5241f9832e71a2de71" title="Capacity reserved for future arcs, always &gt;= num_arcs_.">arc_capacity()</a> off the permanent memory requirement with a similar class that doesn't support <a class="el" href="classutil_1_1StaticGraph.html#a9615f3c590e39f40ca5158bd4f37b5b4">Tail()</a>, i.e. StaticGraphWithoutTail&lt;&gt;. This almost corresponds to a past implementation of StaticGraph&lt;&gt; @CL 116144340. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00396">396</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1StaticGraph_1_1OutgoingArcIterator.html">OutgoingArcIterator</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:adb271cf4bcf2de5b5bbe300d7054af29"><td class="memItemLeft" align="right" valign="top">typedef NodeIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#adb271cf4bcf2de5b5bbe300d7054af29">NodeIndex</a></td></tr>
<tr class="memdesc:adb271cf4bcf2de5b5bbe300d7054af29"><td class="mdescLeft">&#160;</td><td class="mdescRight">Typedef so you can use Graph::NodeIndex and Graph::ArcIndex to be generic but also to improve the readability of your code. <a href="#adb271cf4bcf2de5b5bbe300d7054af29">More...</a><br /></td></tr>
<tr class="separator:adb271cf4bcf2de5b5bbe300d7054af29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0eba6e5899924388644dfa2258ae8929"><td class="memItemLeft" align="right" valign="top">typedef ArcIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a0eba6e5899924388644dfa2258ae8929">ArcIndex</a></td></tr>
<tr class="separator:a0eba6e5899924388644dfa2258ae8929"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:afe7f293d20a6f38c859af7c51ab1b105"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1StaticGraph.html#afe7f293d20a6f38c859af7c51ab1b105">StaticGraph</a> ()</td></tr>
<tr class="separator:afe7f293d20a6f38c859af7c51ab1b105"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb5850c4145abf3dad76d25668368505"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1StaticGraph.html#abb5850c4145abf3dad76d25668368505">StaticGraph</a> (NodeIndexType <a class="el" href="classutil_1_1BaseGraph.html#a0f551c921fa0b5aaa334a6e36f61db4a">num_nodes</a>, ArcIndexType <a class="el" href="classutil_1_1BaseGraph.html#a92ffd852b2ab2e5241f9832e71a2de71">arc_capacity</a>)</td></tr>
<tr class="separator:abb5850c4145abf3dad76d25668368505"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aefeec121033f3271585a059f0b5fbd3c"><td class="memItemLeft" align="right" valign="top">NodeIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1StaticGraph.html#aefeec121033f3271585a059f0b5fbd3c">Head</a> (ArcIndexType arc) const</td></tr>
<tr class="separator:aefeec121033f3271585a059f0b5fbd3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9615f3c590e39f40ca5158bd4f37b5b4"><td class="memItemLeft" align="right" valign="top">NodeIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1StaticGraph.html#a9615f3c590e39f40ca5158bd4f37b5b4">Tail</a> (ArcIndexType arc) const</td></tr>
<tr class="separator:a9615f3c590e39f40ca5158bd4f37b5b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7241e6e63df39df439a5ebb4fe28773e"><td class="memItemLeft" align="right" valign="top">ArcIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1StaticGraph.html#a7241e6e63df39df439a5ebb4fe28773e">OutDegree</a> (NodeIndexType node) const</td></tr>
<tr class="separator:a7241e6e63df39df439a5ebb4fe28773e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa7eeb525aab90ef2bab82eb69687f600"><td class="memItemLeft" align="right" valign="top"><a class="el" href="iterators_8h.html#af3f6bc803bbe87af730cf9e41a35cf68">BeginEndWrapper</a>&lt; <a class="el" href="classutil_1_1StaticGraph_1_1OutgoingArcIterator.html">OutgoingArcIterator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1StaticGraph.html#aa7eeb525aab90ef2bab82eb69687f600">OutgoingArcs</a> (NodeIndexType node) const</td></tr>
<tr class="separator:aa7eeb525aab90ef2bab82eb69687f600"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6626536ee02fe83aa26ff7bbcfc8ae7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="iterators_8h.html#af3f6bc803bbe87af730cf9e41a35cf68">BeginEndWrapper</a>&lt; <a class="el" href="classutil_1_1StaticGraph_1_1OutgoingArcIterator.html">OutgoingArcIterator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1StaticGraph.html#aa6626536ee02fe83aa26ff7bbcfc8ae7">OutgoingArcsStartingFrom</a> (NodeIndexType node, ArcIndexType from) const</td></tr>
<tr class="separator:aa6626536ee02fe83aa26ff7bbcfc8ae7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a160bf25732e2b1a19e8bf6d853014070"><td class="memItemLeft" align="right" valign="top"><a class="el" href="iterators_8h.html#af3f6bc803bbe87af730cf9e41a35cf68">BeginEndWrapper</a>&lt; NodeIndexType const * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1StaticGraph.html#a160bf25732e2b1a19e8bf6d853014070">operator[]</a> (NodeIndexType node) const</td></tr>
<tr class="memdesc:a160bf25732e2b1a19e8bf6d853014070"><td class="mdescLeft">&#160;</td><td class="mdescRight">This loops over the heads of the OutgoingArcs(node). <a href="#a160bf25732e2b1a19e8bf6d853014070">More...</a><br /></td></tr>
<tr class="separator:a160bf25732e2b1a19e8bf6d853014070"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b1c856f35140cb8902b94374a43d368"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1StaticGraph.html#a9b1c856f35140cb8902b94374a43d368">ReserveNodes</a> (NodeIndexType bound) override</td></tr>
<tr class="memdesc:a9b1c856f35140cb8902b94374a43d368"><td class="mdescLeft">&#160;</td><td class="mdescRight">Changes the graph capacities. <a href="#a9b1c856f35140cb8902b94374a43d368">More...</a><br /></td></tr>
<tr class="separator:a9b1c856f35140cb8902b94374a43d368"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98f11aaa1013df49976fcb5433538ff5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1StaticGraph.html#a98f11aaa1013df49976fcb5433538ff5">ReserveArcs</a> (ArcIndexType bound) override</td></tr>
<tr class="separator:a98f11aaa1013df49976fcb5433538ff5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2a879f538b488698183a860bdb88596"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1StaticGraph.html#aa2a879f538b488698183a860bdb88596">AddNode</a> (NodeIndexType node)</td></tr>
<tr class="separator:aa2a879f538b488698183a860bdb88596"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10d877b38553e9d2d0ce6fcfc4427df4"><td class="memItemLeft" align="right" valign="top">ArcIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1StaticGraph.html#a10d877b38553e9d2d0ce6fcfc4427df4">AddArc</a> (NodeIndexType tail, NodeIndexType head)</td></tr>
<tr class="separator:a10d877b38553e9d2d0ce6fcfc4427df4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b8444bcee7138b5702880a882d29283"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1StaticGraph.html#a0b8444bcee7138b5702880a882d29283">Build</a> ()</td></tr>
<tr class="separator:a0b8444bcee7138b5702880a882d29283"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abfa63fa219b3d8c73a324977312182eb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1StaticGraph.html#abfa63fa219b3d8c73a324977312182eb">Build</a> (std::vector&lt; ArcIndexType &gt; *permutation)</td></tr>
<tr class="memdesc:abfa63fa219b3d8c73a324977312182eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implementation details: A reader may be surprised that we do many passes into the data where things could be done in one pass. <a href="#abfa63fa219b3d8c73a324977312182eb">More...</a><br /></td></tr>
<tr class="separator:abfa63fa219b3d8c73a324977312182eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f551c921fa0b5aaa334a6e36f61db4a"><td class="memItemLeft" align="right" valign="top">NodeIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a0f551c921fa0b5aaa334a6e36f61db4a">num_nodes</a> () const</td></tr>
<tr class="memdesc:a0f551c921fa0b5aaa334a6e36f61db4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of valid nodes in the graph. <a href="#a0f551c921fa0b5aaa334a6e36f61db4a">More...</a><br /></td></tr>
<tr class="separator:a0f551c921fa0b5aaa334a6e36f61db4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aefb468e4d4a3128c91b3bad9f5b314c8"><td class="memItemLeft" align="right" valign="top">ArcIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#aefb468e4d4a3128c91b3bad9f5b314c8">num_arcs</a> () const</td></tr>
<tr class="memdesc:aefb468e4d4a3128c91b3bad9f5b314c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of valid arcs in the graph. <a href="#aefb468e4d4a3128c91b3bad9f5b314c8">More...</a><br /></td></tr>
<tr class="separator:aefb468e4d4a3128c91b3bad9f5b314c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32ba4a5ca9a4b89f750eb2dc56518b02"><td class="memItemLeft" align="right" valign="top">IntegerRange&lt; <a class="el" href="classutil_1_1BaseGraph.html#adb271cf4bcf2de5b5bbe300d7054af29">NodeIndex</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a32ba4a5ca9a4b89f750eb2dc56518b02">AllNodes</a> () const</td></tr>
<tr class="memdesc:a32ba4a5ca9a4b89f750eb2dc56518b02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows nice range-based for loop: for (const NodeIndex node : graph.AllNodes()) { ... <a href="#a32ba4a5ca9a4b89f750eb2dc56518b02">More...</a><br /></td></tr>
<tr class="separator:a32ba4a5ca9a4b89f750eb2dc56518b02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcfd7c21143e5ed38573c0dd60826dd8"><td class="memItemLeft" align="right" valign="top">IntegerRange&lt; <a class="el" href="classutil_1_1BaseGraph.html#a0eba6e5899924388644dfa2258ae8929">ArcIndex</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#abcfd7c21143e5ed38573c0dd60826dd8">AllForwardArcs</a> () const</td></tr>
<tr class="separator:abcfd7c21143e5ed38573c0dd60826dd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf853acea86e01356f53055f77661770"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#abf853acea86e01356f53055f77661770">IsNodeValid</a> (NodeIndexType node) const</td></tr>
<tr class="memdesc:abf853acea86e01356f53055f77661770"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the given node is a valid node of the graph. <a href="#abf853acea86e01356f53055f77661770">More...</a><br /></td></tr>
<tr class="separator:abf853acea86e01356f53055f77661770"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2097ccda3b1ad27e2c82166979018bda"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a2097ccda3b1ad27e2c82166979018bda">IsArcValid</a> (ArcIndexType arc) const</td></tr>
<tr class="memdesc:a2097ccda3b1ad27e2c82166979018bda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the given arc is a valid arc of the graph. <a href="#a2097ccda3b1ad27e2c82166979018bda">More...</a><br /></td></tr>
<tr class="separator:a2097ccda3b1ad27e2c82166979018bda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a463d57480c9563a7a707c5d0928c9946"><td class="memItemLeft" align="right" valign="top">NodeIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a463d57480c9563a7a707c5d0928c9946">node_capacity</a> () const</td></tr>
<tr class="memdesc:a463d57480c9563a7a707c5d0928c9946"><td class="mdescLeft">&#160;</td><td class="mdescRight">Capacity reserved for future nodes, always &gt;= num_nodes_. <a href="#a463d57480c9563a7a707c5d0928c9946">More...</a><br /></td></tr>
<tr class="separator:a463d57480c9563a7a707c5d0928c9946"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92ffd852b2ab2e5241f9832e71a2de71"><td class="memItemLeft" align="right" valign="top">ArcIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a92ffd852b2ab2e5241f9832e71a2de71">arc_capacity</a> () const</td></tr>
<tr class="memdesc:a92ffd852b2ab2e5241f9832e71a2de71"><td class="mdescLeft">&#160;</td><td class="mdescRight">Capacity reserved for future arcs, always &gt;= num_arcs_. <a href="#a92ffd852b2ab2e5241f9832e71a2de71">More...</a><br /></td></tr>
<tr class="separator:a92ffd852b2ab2e5241f9832e71a2de71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab731ca5c638e7b1b0a2c459c94a90f55"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#ab731ca5c638e7b1b0a2c459c94a90f55">Reserve</a> (NodeIndexType <a class="el" href="classutil_1_1BaseGraph.html#a463d57480c9563a7a707c5d0928c9946">node_capacity</a>, ArcIndexType <a class="el" href="classutil_1_1BaseGraph.html#a92ffd852b2ab2e5241f9832e71a2de71">arc_capacity</a>)</td></tr>
<tr class="separator:ab731ca5c638e7b1b0a2c459c94a90f55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3bd051d1e141b09dda17aa9b5f24f69"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#aa3bd051d1e141b09dda17aa9b5f24f69">FreezeCapacities</a> ()</td></tr>
<tr class="memdesc:aa3bd051d1e141b09dda17aa9b5f24f69"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classutil_1_1BaseGraph.html#aa3bd051d1e141b09dda17aa9b5f24f69" title="FreezeCapacities() makes any future attempt to change the graph capacities crash in DEBUG mode.">FreezeCapacities()</a> makes any future attempt to change the graph capacities crash in DEBUG mode. <a href="#aa3bd051d1e141b09dda17aa9b5f24f69">More...</a><br /></td></tr>
<tr class="separator:aa3bd051d1e141b09dda17aa9b5f24f69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07214b96597069d781e27b1dd17ef83e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a07214b96597069d781e27b1dd17ef83e">GroupForwardArcsByFunctor</a> (const A &amp;a, B *b)</td></tr>
<tr class="separator:a07214b96597069d781e27b1dd17ef83e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a346b8a5811f0e287e1ebce2de2c1ad28"><td class="memItemLeft" align="right" valign="top">ArcIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a346b8a5811f0e287e1ebce2de2c1ad28">max_end_arc_index</a> () const</td></tr>
<tr class="separator:a346b8a5811f0e287e1ebce2de2c1ad28"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:ab1292c82a3f43be3bd57b63a05fe0214"><td class="memItemLeft" align="right" valign="top">static const NodeIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#ab1292c82a3f43be3bd57b63a05fe0214">kNilNode</a></td></tr>
<tr class="memdesc:ab1292c82a3f43be3bd57b63a05fe0214"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constants that will never be a valid node or arc. <a href="#ab1292c82a3f43be3bd57b63a05fe0214">More...</a><br /></td></tr>
<tr class="separator:ab1292c82a3f43be3bd57b63a05fe0214"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5b77846f77c2771e840820812ad5521"><td class="memItemLeft" align="right" valign="top">static const ArcIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#ad5b77846f77c2771e840820812ad5521">kNilArc</a></td></tr>
<tr class="separator:ad5b77846f77c2771e840820812ad5521"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:ac47030fcb75a3220f8cf9ed79697056e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#ac47030fcb75a3220f8cf9ed79697056e">ComputeCumulativeSum</a> (std::vector&lt; ArcIndexType &gt; *v)</td></tr>
<tr class="memdesc:ac47030fcb75a3220f8cf9ed79697056e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions commented when defined because they are implementation details. <a href="#ac47030fcb75a3220f8cf9ed79697056e">More...</a><br /></td></tr>
<tr class="separator:ac47030fcb75a3220f8cf9ed79697056e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63fd586eed6c345866317e2f0faf377e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a63fd586eed6c345866317e2f0faf377e">BuildStartAndForwardHead</a> (<a class="el" href="classutil_1_1SVector.html">SVector</a>&lt; NodeIndexType &gt; *head, std::vector&lt; ArcIndexType &gt; *start, std::vector&lt; ArcIndexType &gt; *permutation)</td></tr>
<tr class="memdesc:a63fd586eed6c345866317e2f0faf377e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Given the tail of arc #i in (*head)[i] and the head of arc #i in (*head)[~i]. <a href="#a63fd586eed6c345866317e2f0faf377e">More...</a><br /></td></tr>
<tr class="separator:a63fd586eed6c345866317e2f0faf377e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a473db46afec1eabf0762411830dee30f"><td class="memItemLeft" align="right" valign="top">NodeIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a473db46afec1eabf0762411830dee30f">num_nodes_</a></td></tr>
<tr class="separator:a473db46afec1eabf0762411830dee30f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a424bd34a9767e7edeaf3a60ecd3cb000"><td class="memItemLeft" align="right" valign="top">NodeIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a424bd34a9767e7edeaf3a60ecd3cb000">node_capacity_</a></td></tr>
<tr class="separator:a424bd34a9767e7edeaf3a60ecd3cb000"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af16f99d41856a7b22ae8a226ef09abff"><td class="memItemLeft" align="right" valign="top">ArcIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#af16f99d41856a7b22ae8a226ef09abff">num_arcs_</a></td></tr>
<tr class="separator:af16f99d41856a7b22ae8a226ef09abff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a895e891d1ad52ce3efcfeb7ba11194c7"><td class="memItemLeft" align="right" valign="top">ArcIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a895e891d1ad52ce3efcfeb7ba11194c7">arc_capacity_</a></td></tr>
<tr class="separator:a895e891d1ad52ce3efcfeb7ba11194c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa980e5526b9ded17a83928fc339c71e4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#aa980e5526b9ded17a83928fc339c71e4">const_capacities_</a></td></tr>
<tr class="separator:aa980e5526b9ded17a83928fc339c71e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Typedef Documentation</h2>
<a id="a0eba6e5899924388644dfa2258ae8929"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0eba6e5899924388644dfa2258ae8929">&#9670;&nbsp;</a></span>ArcIndex</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">typedef ArcIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::<a class="el" href="classutil_1_1BaseGraph.html#a0eba6e5899924388644dfa2258ae8929">ArcIndex</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00190">190</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="adb271cf4bcf2de5b5bbe300d7054af29"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adb271cf4bcf2de5b5bbe300d7054af29">&#9670;&nbsp;</a></span>NodeIndex</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">typedef NodeIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::<a class="el" href="classutil_1_1BaseGraph.html#adb271cf4bcf2de5b5bbe300d7054af29">NodeIndex</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Typedef so you can use <a class="el" href="classutil_1_1BaseGraph.html#adb271cf4bcf2de5b5bbe300d7054af29" title="Typedef so you can use Graph::NodeIndex and Graph::ArcIndex to be generic but also to improve the rea...">Graph::NodeIndex</a> and <a class="el" href="classutil_1_1BaseGraph.html#a0eba6e5899924388644dfa2258ae8929">Graph::ArcIndex</a> to be generic but also to improve the readability of your code. </p>
<p>We also recommend that you define a typedef ... Graph; for readability. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00189">189</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="afe7f293d20a6f38c859af7c51ab1b105"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afe7f293d20a6f38c859af7c51ab1b105">&#9670;&nbsp;</a></span>StaticGraph() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType = int32, typename ArcIndexType = int32&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classutil_1_1StaticGraph.html">util::StaticGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::<a class="el" href="classutil_1_1StaticGraph.html">StaticGraph</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00406">406</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="abb5850c4145abf3dad76d25668368505"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb5850c4145abf3dad76d25668368505">&#9670;&nbsp;</a></span>StaticGraph() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType = int32, typename ArcIndexType = int32&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classutil_1_1StaticGraph.html">util::StaticGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::<a class="el" href="classutil_1_1StaticGraph.html">StaticGraph</a> </td>
<td>(</td>
<td class="paramtype">NodeIndexType&#160;</td>
<td class="paramname"><em>num_nodes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ArcIndexType&#160;</td>
<td class="paramname"><em>arc_capacity</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00407">407</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a10d877b38553e9d2d0ce6fcfc4427df4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10d877b38553e9d2d0ce6fcfc4427df4">&#9670;&nbsp;</a></span>AddArc()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType , typename ArcIndexType &gt; </div>
<table class="memname">
<tr>
<td class="memname">ArcIndexType <a class="el" href="classutil_1_1StaticGraph.html">util::StaticGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::AddArc </td>
<td>(</td>
<td class="paramtype">NodeIndexType&#160;</td>
<td class="paramname"><em>tail</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">NodeIndexType&#160;</td>
<td class="paramname"><em>head</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l01283">1283</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="aa2a879f538b488698183a860bdb88596"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa2a879f538b488698183a860bdb88596">&#9670;&nbsp;</a></span>AddNode()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType , typename ArcIndexType &gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classutil_1_1StaticGraph.html">util::StaticGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::AddNode </td>
<td>(</td>
<td class="paramtype">NodeIndexType&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l01275">1275</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="abcfd7c21143e5ed38573c0dd60826dd8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abcfd7c21143e5ed38573c0dd60826dd8">&#9670;&nbsp;</a></span>AllForwardArcs()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">IntegerRange&lt; ArcIndexType &gt; <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::AllForwardArcs </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00935">935</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a32ba4a5ca9a4b89f750eb2dc56518b02"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a32ba4a5ca9a4b89f750eb2dc56518b02">&#9670;&nbsp;</a></span>AllNodes()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">IntegerRange&lt; NodeIndexType &gt; <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::AllNodes </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Allows nice range-based for loop: for (const NodeIndex node : graph.AllNodes()) { ... </p>
<p><a class="el" href="classutil_1_1BaseGraph.html" title="Base class of all Graphs implemented here.">BaseGraph</a> implementation -------------------------------------------------&mdash;.</p>
<p>} for (const ArcIndex arc : graph.AllForwardArcs()) { ... } </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00929">929</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a92ffd852b2ab2e5241f9832e71a2de71"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a92ffd852b2ab2e5241f9832e71a2de71">&#9670;&nbsp;</a></span>arc_capacity()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ArcIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::arc_capacity </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Capacity reserved for future arcs, always &gt;= num_arcs_. </p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000015">Todo:</a></b></dt><dd>(user): Same questions as the ones in <a class="el" href="classutil_1_1BaseGraph.html#a463d57480c9563a7a707c5d0928c9946" title="Capacity reserved for future nodes, always &gt;= num_nodes_.">node_capacity()</a>. </dd></dl>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00959">959</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a0b8444bcee7138b5702880a882d29283"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0b8444bcee7138b5702880a882d29283">&#9670;&nbsp;</a></span>Build() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType = int32, typename ArcIndexType = int32&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classutil_1_1StaticGraph.html">util::StaticGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::Build </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00434">434</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="abfa63fa219b3d8c73a324977312182eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abfa63fa219b3d8c73a324977312182eb">&#9670;&nbsp;</a></span>Build() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType , typename ArcIndexType &gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classutil_1_1StaticGraph.html">util::StaticGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::Build </td>
<td>(</td>
<td class="paramtype">std::vector&lt; ArcIndexType &gt; *&#160;</td>
<td class="paramname"><em>permutation</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Implementation details: A reader may be surprised that we do many passes into the data where things could be done in one pass. </p>
<p>For instance, during construction, we store the edges first, and then do a second pass at the end to compute the degree distribution.</p>
<p>This is because it is a lot more efficient cache-wise to do it this way. This was determined by various experiments, but can also be understood:</p><ul>
<li>during repetitive call to <a class="el" href="classutil_1_1StaticGraph.html#a10d877b38553e9d2d0ce6fcfc4427df4">AddArc()</a> a client usually accesses various areas of memory, and there is no reason to polute the cache with possibly random access to degree[i].</li>
<li>When the degrees are needed, we compute them in one go, maximizing the chance of cache hit during the computation. </li>
</ul>
<p>If Arc are in order, start_ already contains the degree distribution.</p>
<p>Computes outgoing degree of each nodes. We have to clear start_, since at least the first arc was processed with arc_in_order_ == true.</p>
<p>Computes the forward arc permutation. </p><dl class="section note"><dt>Note</dt><dd>this temporarily alters the start_ vector.</dd></dl>
<p>We use "tail_" (which now contains rubbish) to permute "head_" faster.</p>
<p>Restore in start_[i] the index of the first arc with tail &gt;= i.</p>
<p>Recompute the correct tail_ vector </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l01330">1330</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a63fd586eed6c345866317e2f0faf377e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a63fd586eed6c345866317e2f0faf377e">&#9670;&nbsp;</a></span>BuildStartAndForwardHead()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::BuildStartAndForwardHead </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classutil_1_1SVector.html">SVector</a>&lt; NodeIndexType &gt; *&#160;</td>
<td class="paramname"><em>head</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; ArcIndexType &gt; *&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; ArcIndexType &gt; *&#160;</td>
<td class="paramname"><em>permutation</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Given the tail of arc #i in (*head)[i] and the head of arc #i in (*head)[~i]. </p>
<ul>
<li>Reorder the arc by increasing tail.</li>
<li>Put the head of the new arc #i in (*head)[i].</li>
<li>Put in start[i] the index of the first arc with tail &gt;= i.</li>
<li>Update "permutation" to reflect the change, unless it is NULL. </li>
</ul>
<p>Computes the outgoing degree of each nodes and check if we need to permute something or not. Note that the tails are currently stored in the positive range of the <a class="el" href="classutil_1_1SVector.html" title="Forward declaration.">SVector</a> head.</p>
<p>Abort early if we do not need the permutation: we only need to put the heads in the positive range.</p>
<p>Computes the forward arc permutation. </p><dl class="section note"><dt>Note</dt><dd>this temporarily alters the start vector.</dd></dl>
<p>Restore in (*start)[i] the index of the first arc with tail &gt;= i.</p>
<p>Permutes the head into their final position in head. We do not need the tails anymore at this point. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00995">995</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="ac47030fcb75a3220f8cf9ed79697056e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac47030fcb75a3220f8cf9ed79697056e">&#9670;&nbsp;</a></span>ComputeCumulativeSum()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::ComputeCumulativeSum </td>
<td>(</td>
<td class="paramtype">std::vector&lt; ArcIndexType &gt; *&#160;</td>
<td class="paramname"><em>v</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Functions commented when defined because they are implementation details. </p>
<p>Computes the cummulative sum of the entry in v.</p>
<p>We only use it with in/out degree distribution, hence the Check() at the end. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00978">978</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="aa3bd051d1e141b09dda17aa9b5f24f69"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa3bd051d1e141b09dda17aa9b5f24f69">&#9670;&nbsp;</a></span>FreezeCapacities()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::FreezeCapacities </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="classutil_1_1BaseGraph.html#aa3bd051d1e141b09dda17aa9b5f24f69" title="FreezeCapacities() makes any future attempt to change the graph capacities crash in DEBUG mode.">FreezeCapacities()</a> makes any future attempt to change the graph capacities crash in DEBUG mode. </p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000016">Todo:</a></b></dt><dd>(user): Only define this in debug mode at the cost of having a lot of ifndef NDEBUG all over the place? remove the function completely ? </dd></dl>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00966">966</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a07214b96597069d781e27b1dd17ef83e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a07214b96597069d781e27b1dd17ef83e">&#9670;&nbsp;</a></span>GroupForwardArcsByFunctor()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::GroupForwardArcsByFunctor </td>
<td>(</td>
<td class="paramtype">const A &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">B *&#160;</td>
<td class="paramname"><em>b</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000018">Todo:</a></b></dt><dd>(user): remove the public functions below.</dd></dl>
<p>They are just here during the transition from the old ebert_graph api to this new graph api. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00264">264</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="aefeec121033f3271585a059f0b5fbd3c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aefeec121033f3271585a059f0b5fbd3c">&#9670;&nbsp;</a></span>Head()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType , typename ArcIndexType &gt; </div>
<table class="memname">
<tr>
<td class="memname">NodeIndexType <a class="el" href="classutil_1_1StaticGraph.html">util::StaticGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::Head </td>
<td>(</td>
<td class="paramtype">ArcIndexType&#160;</td>
<td class="paramname"><em>arc</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l01311">1311</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a2097ccda3b1ad27e2c82166979018bda"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2097ccda3b1ad27e2c82166979018bda">&#9670;&nbsp;</a></span>IsArcValid()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::IsArcValid </td>
<td>(</td>
<td class="paramtype">ArcIndexType&#160;</td>
<td class="paramname"><em>arc</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true if the given arc is a valid arc of the graph. </p>
<dl class="section note"><dt>Note</dt><dd>the arc validity range changes for graph with reverse arcs. </dd></dl>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00219">219</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="abf853acea86e01356f53055f77661770"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf853acea86e01356f53055f77661770">&#9670;&nbsp;</a></span>IsNodeValid()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::IsNodeValid </td>
<td>(</td>
<td class="paramtype">NodeIndexType&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true if the given node is a valid node of the graph. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00213">213</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a346b8a5811f0e287e1ebce2de2c1ad28"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a346b8a5811f0e287e1ebce2de2c1ad28">&#9670;&nbsp;</a></span>max_end_arc_index()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ArcIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::max_end_arc_index </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00267">267</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a463d57480c9563a7a707c5d0928c9946"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a463d57480c9563a7a707c5d0928c9946">&#9670;&nbsp;</a></span>node_capacity()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">NodeIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::node_capacity </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Capacity reserved for future nodes, always &gt;= num_nodes_. </p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000014">Todo:</a></b></dt><dd>(user): Is it needed? remove completely? return the real capacities at the cost of having a different implementation for each graphs? </dd></dl>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00951">951</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="aefb468e4d4a3128c91b3bad9f5b314c8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aefb468e4d4a3128c91b3bad9f5b314c8">&#9670;&nbsp;</a></span>num_arcs()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ArcIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::num_arcs </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of valid arcs in the graph. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00204">204</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a0f551c921fa0b5aaa334a6e36f61db4a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0f551c921fa0b5aaa334a6e36f61db4a">&#9670;&nbsp;</a></span>num_nodes()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">NodeIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::num_nodes </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of valid nodes in the graph. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00201">201</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a160bf25732e2b1a19e8bf6d853014070"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a160bf25732e2b1a19e8bf6d853014070">&#9670;&nbsp;</a></span>operator[]()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType , typename ArcIndexType &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="iterators_8h.html#af3f6bc803bbe87af730cf9e41a35cf68">BeginEndWrapper</a>&lt; NodeIndexType const * &gt; <a class="el" href="classutil_1_1StaticGraph.html">util::StaticGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::operator[] </td>
<td>(</td>
<td class="paramtype">NodeIndexType&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>This loops over the heads of the OutgoingArcs(node). </p>
<p>It is just a more convenient way to achieve this. Moreover this interface is used by some graph algorithms. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l01246">1246</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a7241e6e63df39df439a5ebb4fe28773e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7241e6e63df39df439a5ebb4fe28773e">&#9670;&nbsp;</a></span>OutDegree()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType , typename ArcIndexType &gt; </div>
<table class="memname">
<tr>
<td class="memname">ArcIndexType <a class="el" href="classutil_1_1StaticGraph.html">util::StaticGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::OutDegree </td>
<td>(</td>
<td class="paramtype">NodeIndexType&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l01253">1253</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="aa7eeb525aab90ef2bab82eb69687f600"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa7eeb525aab90ef2bab82eb69687f600">&#9670;&nbsp;</a></span>OutgoingArcs()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType = int32, typename ArcIndexType = int32&gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="iterators_8h.html#af3f6bc803bbe87af730cf9e41a35cf68">BeginEndWrapper</a>&lt;<a class="el" href="classutil_1_1StaticGraph_1_1OutgoingArcIterator.html">OutgoingArcIterator</a>&gt; <a class="el" href="classutil_1_1StaticGraph.html">util::StaticGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::OutgoingArcs </td>
<td>(</td>
<td class="paramtype">NodeIndexType&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa6626536ee02fe83aa26ff7bbcfc8ae7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6626536ee02fe83aa26ff7bbcfc8ae7">&#9670;&nbsp;</a></span>OutgoingArcsStartingFrom()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType = int32, typename ArcIndexType = int32&gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="iterators_8h.html#af3f6bc803bbe87af730cf9e41a35cf68">BeginEndWrapper</a>&lt;<a class="el" href="classutil_1_1StaticGraph_1_1OutgoingArcIterator.html">OutgoingArcIterator</a>&gt; <a class="el" href="classutil_1_1StaticGraph.html">util::StaticGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::OutgoingArcsStartingFrom </td>
<td>(</td>
<td class="paramtype">NodeIndexType&#160;</td>
<td class="paramname"><em>node</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ArcIndexType&#160;</td>
<td class="paramname"><em>from</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab731ca5c638e7b1b0a2c459c94a90f55"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab731ca5c638e7b1b0a2c459c94a90f55">&#9670;&nbsp;</a></span>Reserve()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::Reserve </td>
<td>(</td>
<td class="paramtype">NodeIndexType&#160;</td>
<td class="paramname"><em>node_capacity</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ArcIndexType&#160;</td>
<td class="paramname"><em>arc_capacity</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00247">247</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a98f11aaa1013df49976fcb5433538ff5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a98f11aaa1013df49976fcb5433538ff5">&#9670;&nbsp;</a></span>ReserveArcs()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType , typename ArcIndexType &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classutil_1_1StaticGraph.html">util::StaticGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::ReserveArcs </td>
<td>(</td>
<td class="paramtype">ArcIndexType&#160;</td>
<td class="paramname"><em>bound</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reimplemented from <a class="el" href="classutil_1_1BaseGraph.html#a9563f7154a759843923dd9bb27b288e7">util::BaseGraph&lt; NodeIndexType, ArcIndexType, false &gt;</a>.</p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l01267">1267</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a9b1c856f35140cb8902b94374a43d368"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b1c856f35140cb8902b94374a43d368">&#9670;&nbsp;</a></span>ReserveNodes()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType , typename ArcIndexType &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classutil_1_1StaticGraph.html">util::StaticGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::ReserveNodes </td>
<td>(</td>
<td class="paramtype">NodeIndexType&#160;</td>
<td class="paramname"><em>bound</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Changes the graph capacities. </p>
<p>The functions will fail in debug mode if:</p><ul>
<li>const_capacities_ is true.</li>
<li>A valid node does not fall into the new node range.</li>
<li>A valid arc does not fall into the new arc range. In non-debug mode, const_capacities_ is ignored and nothing will happen if the new capacity value for the arcs or the nodes is too small. </li>
</ul>
<p>Reimplemented from <a class="el" href="classutil_1_1BaseGraph.html#a69a71cbb575b13bde9899f5a6a217139">util::BaseGraph&lt; NodeIndexType, ArcIndexType, false &gt;</a>.</p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l01259">1259</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a9615f3c590e39f40ca5158bd4f37b5b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9615f3c590e39f40ca5158bd4f37b5b4">&#9670;&nbsp;</a></span>Tail()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType , typename ArcIndexType &gt; </div>
<table class="memname">
<tr>
<td class="memname">NodeIndexType <a class="el" href="classutil_1_1StaticGraph.html">util::StaticGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::Tail </td>
<td>(</td>
<td class="paramtype">ArcIndexType&#160;</td>
<td class="paramname"><em>arc</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l01304">1304</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a895e891d1ad52ce3efcfeb7ba11194c7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a895e891d1ad52ce3efcfeb7ba11194c7">&#9670;&nbsp;</a></span>arc_capacity_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ArcIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::arc_capacity_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00279">279</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="aa980e5526b9ded17a83928fc339c71e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa980e5526b9ded17a83928fc339c71e4">&#9670;&nbsp;</a></span>const_capacities_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::const_capacities_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00280">280</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="ad5b77846f77c2771e840820812ad5521"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad5b77846f77c2771e840820812ad5521">&#9670;&nbsp;</a></span>kNilArc</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const ArcIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::kNilArc</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00259">259</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="ab1292c82a3f43be3bd57b63a05fe0214"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab1292c82a3f43be3bd57b63a05fe0214">&#9670;&nbsp;</a></span>kNilNode</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const NodeIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::kNilNode</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constants that will never be a valid node or arc. </p>
<p>They are the maximum possible node and arc capacity. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00258">258</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a424bd34a9767e7edeaf3a60ecd3cb000"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a424bd34a9767e7edeaf3a60ecd3cb000">&#9670;&nbsp;</a></span>node_capacity_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">NodeIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::node_capacity_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00277">277</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="af16f99d41856a7b22ae8a226ef09abff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af16f99d41856a7b22ae8a226ef09abff">&#9670;&nbsp;</a></span>num_arcs_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ArcIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::num_arcs_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00278">278</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a473db46afec1eabf0762411830dee30f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a473db46afec1eabf0762411830dee30f">&#9670;&nbsp;</a></span>num_nodes_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">NodeIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::num_nodes_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00276">276</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="graph_8h_source.html">graph.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
</div>
<div id="footer-container">
<div id="footer">
</div>
</div>
</body>
</html>