mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-03-22 04:42:10 +08:00
850 lines
65 KiB
HTML
850 lines
65 KiB
HTML
<!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=9"/>
|
|
<meta name="generator" content="Doxygen 1.8.20"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>Algorithms_in_C++: graph Namespace 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">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.8.20 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
|
|
/* @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:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
$(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:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
$(document).ready(function(){initNavTree('df/dce/namespacegraph.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="#nested-classes">Classes</a> |
|
|
<a href="#typedef-members">Typedefs</a> |
|
|
<a href="#func-members">Functions</a> </div>
|
|
<div class="headertitle">
|
|
<div class="title">graph Namespace Reference</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
|
|
<p><a class="el" href="../../dc/d61/classgraph_1_1_graph.html">Graph</a> algorithms.
|
|
<a href="../../df/dce/namespacegraph.html#details">More...</a></p>
|
|
<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  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d61/classgraph_1_1_graph.html">Graph</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d23/classgraph_1_1_lowest_common_ancestor.html">LowestCommonAncestor</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d58/classgraph_1_1_rooted_tree.html">RootedTree</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
|
|
Typedefs</h2></td></tr>
|
|
<tr class="memitem:ad9e7929c7542e1865501c808b4364ec9"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/dce/namespacegraph.html#ad9e7929c7542e1865501c808b4364ec9">adjacency_list</a> = <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< int > ></td></tr>
|
|
<tr class="memdesc:ad9e7929c7542e1865501c808b4364ec9"><td class="mdescLeft"> </td><td class="mdescRight">Representation of the graph as an adjacency list. <a href="../../df/dce/namespacegraph.html#ad9e7929c7542e1865501c808b4364ec9">More...</a><br /></td></tr>
|
|
<tr class="separator:ad9e7929c7542e1865501c808b4364ec9"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
|
Functions</h2></td></tr>
|
|
<tr class="memitem:a1a13974bfe597e853bffe91aa2d3944d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/dce/namespacegraph.html#a1a13974bfe597e853bffe91aa2d3944d">add_directed_edge</a> (<a class="el" href="../../df/dce/namespacegraph.html#ad9e7929c7542e1865501c808b4364ec9">adjacency_list</a> *graph, int u, int v)</td></tr>
|
|
<tr class="memdesc:a1a13974bfe597e853bffe91aa2d3944d"><td class="mdescLeft"> </td><td class="mdescRight">Adds a directed edge from vertex u to vertex v. <a href="../../df/dce/namespacegraph.html#a1a13974bfe597e853bffe91aa2d3944d">More...</a><br /></td></tr>
|
|
<tr class="separator:a1a13974bfe597e853bffe91aa2d3944d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a8c7d0cbc90b3b921d02da35d58b63153"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/dce/namespacegraph.html#a8c7d0cbc90b3b921d02da35d58b63153">add_undirected_edge</a> (<a class="el" href="../../df/dce/namespacegraph.html#ad9e7929c7542e1865501c808b4364ec9">adjacency_list</a> *graph, int u, int v)</td></tr>
|
|
<tr class="memdesc:a8c7d0cbc90b3b921d02da35d58b63153"><td class="mdescLeft"> </td><td class="mdescRight">Adds an undirected edge from vertex u to vertex v. Essentially adds too directed edges to the adjacency list reprsentation of the graph. <a href="../../df/dce/namespacegraph.html#a8c7d0cbc90b3b921d02da35d58b63153">More...</a><br /></td></tr>
|
|
<tr class="separator:a8c7d0cbc90b3b921d02da35d58b63153"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a0e0d3bf6c8a63f8071395c53a3cd148d"><td class="memItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< bool > </td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/dce/namespacegraph.html#a0e0d3bf6c8a63f8071395c53a3cd148d">breadth_first_search</a> (const <a class="el" href="../../df/dce/namespacegraph.html#ad9e7929c7542e1865501c808b4364ec9">adjacency_list</a> &graph, int start)</td></tr>
|
|
<tr class="memdesc:a0e0d3bf6c8a63f8071395c53a3cd148d"><td class="mdescLeft"> </td><td class="mdescRight">Function performs the breadth first search algorithm over the graph. <a href="../../df/dce/namespacegraph.html#a0e0d3bf6c8a63f8071395c53a3cd148d">More...</a><br /></td></tr>
|
|
<tr class="separator:a0e0d3bf6c8a63f8071395c53a3cd148d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a372ff051a7bc6c91d34a7b58edf8dfce"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/dce/namespacegraph.html#a372ff051a7bc6c91d34a7b58edf8dfce">addEdge</a> (<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< int >> *adj, int u, int v)</td></tr>
|
|
<tr class="memdesc:a372ff051a7bc6c91d34a7b58edf8dfce"><td class="mdescLeft"> </td><td class="mdescRight">Function that add edge between two nodes or vertices of graph. <a href="../../df/dce/namespacegraph.html#a372ff051a7bc6c91d34a7b58edf8dfce">More...</a><br /></td></tr>
|
|
<tr class="separator:a372ff051a7bc6c91d34a7b58edf8dfce"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a8e9885e0dd49fcf8262a9868124deac9"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/dce/namespacegraph.html#a8e9885e0dd49fcf8262a9868124deac9">explore</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< int >> *adj, int u, <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< bool > *visited)</td></tr>
|
|
<tr class="memdesc:a8e9885e0dd49fcf8262a9868124deac9"><td class="mdescLeft"> </td><td class="mdescRight">Utility function for depth first seach algorithm this function explores the vertex which is passed into. <a href="../../df/dce/namespacegraph.html#a8e9885e0dd49fcf8262a9868124deac9">More...</a><br /></td></tr>
|
|
<tr class="separator:a8e9885e0dd49fcf8262a9868124deac9"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a9fc2ded2807582edf398e6d7c7114914"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/dce/namespacegraph.html#a9fc2ded2807582edf398e6d7c7114914">getConnectedComponents</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< int >> *adj)</td></tr>
|
|
<tr class="memdesc:a9fc2ded2807582edf398e6d7c7114914"><td class="mdescLeft"> </td><td class="mdescRight">Function that perfoms depth first search algorithm on graph and calculated the number of connected components. <a href="../../df/dce/namespacegraph.html#a9fc2ded2807582edf398e6d7c7114914">More...</a><br /></td></tr>
|
|
<tr class="separator:a9fc2ded2807582edf398e6d7c7114914"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a33d8f7759375aee956643d76df491b7b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/dce/namespacegraph.html#a33d8f7759375aee956643d76df491b7b">addEdge</a> (<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< size_t >> *adj, size_t u, size_t v)</td></tr>
|
|
<tr class="memdesc:a33d8f7759375aee956643d76df491b7b"><td class="mdescLeft"> </td><td class="mdescRight">Adds and edge between two vertices of graph say u and v in this case. <a href="../../df/dce/namespacegraph.html#a33d8f7759375aee956643d76df491b7b">More...</a><br /></td></tr>
|
|
<tr class="separator:a33d8f7759375aee956643d76df491b7b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a48acac475cb48614279e7ea784c32fc3"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/dce/namespacegraph.html#a48acac475cb48614279e7ea784c32fc3">explore</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< size_t >> &adj, size_t v, <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< bool > *visited)</td></tr>
|
|
<tr class="memdesc:a48acac475cb48614279e7ea784c32fc3"><td class="mdescLeft"> </td><td class="mdescRight">Explores the given vertex, exploring a vertex means traversing over all the vertices which are connected to the vertex that is currently being explored. <a href="../../df/dce/namespacegraph.html#a48acac475cb48614279e7ea784c32fc3">More...</a><br /></td></tr>
|
|
<tr class="separator:a48acac475cb48614279e7ea784c32fc3"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a2e6017a54d445819ede9adcf33240e1a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/dce/namespacegraph.html#a2e6017a54d445819ede9adcf33240e1a">depth_first_search</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< size_t >> &adj, size_t start)</td></tr>
|
|
<tr class="memdesc:a2e6017a54d445819ede9adcf33240e1a"><td class="mdescLeft"> </td><td class="mdescRight">initiates depth first search algorithm. <a href="../../df/dce/namespacegraph.html#a2e6017a54d445819ede9adcf33240e1a">More...</a><br /></td></tr>
|
|
<tr class="separator:a2e6017a54d445819ede9adcf33240e1a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a454891267187a5ec6c6e3f3ad5203ff1"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/dce/namespacegraph.html#a454891267187a5ec6c6e3f3ad5203ff1">addEdge</a> (<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>< int, int >>> *adj, int u, int v, int w)</td></tr>
|
|
<tr class="memdesc:a454891267187a5ec6c6e3f3ad5203ff1"><td class="mdescLeft"> </td><td class="mdescRight">Function that add edge between two nodes or vertices of graph. <a href="../../df/dce/namespacegraph.html#a454891267187a5ec6c6e3f3ad5203ff1">More...</a><br /></td></tr>
|
|
<tr class="separator:a454891267187a5ec6c6e3f3ad5203ff1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a868530bfaed30e57290a76d5b4402d50"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/dce/namespacegraph.html#a868530bfaed30e57290a76d5b4402d50">dijkstra</a> (<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>< int, int >>> *adj, int s, int t)</td></tr>
|
|
<tr class="memdesc:a868530bfaed30e57290a76d5b4402d50"><td class="mdescLeft"> </td><td class="mdescRight">Function runs the dijkstra algorithm for some source vertex and target vertex in the graph and returns the shortest distance of target from the source. <a href="../../df/dce/namespacegraph.html#a868530bfaed30e57290a76d5b4402d50">More...</a><br /></td></tr>
|
|
<tr class="separator:a868530bfaed30e57290a76d5b4402d50"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
<div class="textblock"><p><a class="el" href="../../dc/d61/classgraph_1_1_graph.html">Graph</a> algorithms. </p>
|
|
<p><a class="el" href="../../dc/d61/classgraph_1_1_graph.html">Graph</a> Algorithms. </p>
|
|
</div><h2 class="groupheader">Typedef Documentation</h2>
|
|
<a id="ad9e7929c7542e1865501c808b4364ec9"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ad9e7929c7542e1865501c808b4364ec9">◆ </a></span>adjacency_list</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">using <a class="el" href="../../df/dce/namespacegraph.html#ad9e7929c7542e1865501c808b4364ec9">graph::adjacency_list</a> = typedef <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a><<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a><int> ></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Representation of the graph as an adjacency list. </p>
|
|
<p>For every vertex, there is a list of its neighbors in the order in which they were added to the graph. By default, the edges are directed, but an undirected graph can be represented simply by storing each each as two directed edges in both directions. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Function Documentation</h2>
|
|
<a id="a1a13974bfe597e853bffe91aa2d3944d"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a1a13974bfe597e853bffe91aa2d3944d">◆ </a></span>add_directed_edge()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void graph::add_directed_edge </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="../../df/dce/namespacegraph.html#ad9e7929c7542e1865501c808b4364ec9">adjacency_list</a> * </td>
|
|
<td class="paramname"><em>graph</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>u</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>v</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Adds a directed edge from vertex u to vertex v. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">graph</td><td>Adjacency list representation of graph </td></tr>
|
|
<tr><td class="paramname">u</td><td>first vertex </td></tr>
|
|
<tr><td class="paramname">v</td><td>second vertex </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<div class="fragment"><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div>
|
|
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  (*graph)[u].push_back(v);</div>
|
|
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="a8c7d0cbc90b3b921d02da35d58b63153"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a8c7d0cbc90b3b921d02da35d58b63153">◆ </a></span>add_undirected_edge()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void graph::add_undirected_edge </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="../../df/dce/namespacegraph.html#ad9e7929c7542e1865501c808b4364ec9">adjacency_list</a> * </td>
|
|
<td class="paramname"><em>graph</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>u</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>v</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Adds an undirected edge from vertex u to vertex v. Essentially adds too directed edges to the adjacency list reprsentation of the graph. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">graph</td><td>Adjacency list representation of graph </td></tr>
|
|
<tr><td class="paramname">u</td><td>first vertex </td></tr>
|
|
<tr><td class="paramname">v</td><td>second vertex </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div>
|
|
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="../../df/dce/namespacegraph.html#a1a13974bfe597e853bffe91aa2d3944d">add_directed_edge</a>(<a class="code" href="../../df/dce/namespacegraph.html">graph</a>, u, v);</div>
|
|
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="../../df/dce/namespacegraph.html#a1a13974bfe597e853bffe91aa2d3944d">add_directed_edge</a>(<a class="code" href="../../df/dce/namespacegraph.html">graph</a>, v, u);</div>
|
|
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> }</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="../../df/dce/namespacegraph_a8c7d0cbc90b3b921d02da35d58b63153_cgraph.svg" width="415" height="38"><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="a372ff051a7bc6c91d34a7b58edf8dfce"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a372ff051a7bc6c91d34a7b58edf8dfce">◆ </a></span>addEdge() <span class="overload">[1/3]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void graph::addEdge </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< int >> * </td>
|
|
<td class="paramname"><em>adj</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>u</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>v</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Function that add edge between two nodes or vertices of graph. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">adj</td><td>adjacency list of graph. </td></tr>
|
|
<tr><td class="paramname">u</td><td>any node or vertex of graph. </td></tr>
|
|
<tr><td class="paramname">v</td><td>any node or vertex of graph. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<div class="fragment"><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {</div>
|
|
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  (*adj)[u - 1].push_back(v - 1);</div>
|
|
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  (*adj)[v - 1].push_back(u - 1);</div>
|
|
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> }</div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="a33d8f7759375aee956643d76df491b7b"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a33d8f7759375aee956643d76df491b7b">◆ </a></span>addEdge() <span class="overload">[2/3]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void graph::addEdge </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< size_t >> * </td>
|
|
<td class="paramname"><em>adj</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>u</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>v</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Adds and edge between two vertices of graph say u and v in this case. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">adj</td><td>Adjacency list representation of graph </td></tr>
|
|
<tr><td class="paramname">u</td><td>first vertex </td></tr>
|
|
<tr><td class="paramname">v</td><td>second vertex </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<div class="fragment"><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {</div>
|
|
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">/*</span></div>
|
|
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment"> *</span></div>
|
|
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment"> * Here we are considering undirected graph that's the</span></div>
|
|
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment"> * reason we are adding v to the adjacency list representation of u</span></div>
|
|
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment"> * and also adding u to the adjacency list representation of v</span></div>
|
|
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment"> *</span></div>
|
|
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment"> */</span></div>
|
|
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  (*adj)[u - 1].push_back(v - 1);</div>
|
|
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  (*adj)[v - 1].push_back(u - 1);</div>
|
|
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> }</div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="a454891267187a5ec6c6e3f3ad5203ff1"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a454891267187a5ec6c6e3f3ad5203ff1">◆ </a></span>addEdge() <span class="overload">[3/3]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void graph::addEdge </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>< int, int >>> * </td>
|
|
<td class="paramname"><em>adj</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>u</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>v</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>w</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Function that add edge between two nodes or vertices of graph. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">u</td><td>any node or vertex of graph </td></tr>
|
|
<tr><td class="paramname">v</td><td>any node or vertex of graph </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<div class="fragment"><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  {</div>
|
|
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  (*adj)[u - 1].push_back(<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/pair/make_pair.html">std::make_pair</a>(v - 1, w));</div>
|
|
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// (*adj)[v - 1].push_back(std::make_pair(u - 1, w));</span></div>
|
|
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> }</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="../../df/dce/namespacegraph_a454891267187a5ec6c6e3f3ad5203ff1_cgraph.svg" width="280" height="38"><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="a0e0d3bf6c8a63f8071395c53a3cd148d"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a0e0d3bf6c8a63f8071395c53a3cd148d">◆ </a></span>breadth_first_search()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a><bool> graph::breadth_first_search </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="../../df/dce/namespacegraph.html#ad9e7929c7542e1865501c808b4364ec9">adjacency_list</a> & </td>
|
|
<td class="paramname"><em>graph</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>start</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Function performs the breadth first search algorithm over the graph. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">graph</td><td>Adjacency list representation of graph </td></tr>
|
|
<tr><td class="paramname">start</td><td>vertex from where traversing starts </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>a binary vector indicating which vertices were visited during the search. </dd></dl>
|
|
<p>vector to keep track of visited vertices</p>
|
|
<p>queue that stores vertices that need to be further explored</p>
|
|
<p>mark the starting vertex as visited</p>
|
|
<p>if the vertex is not visited then mark it as visited and push it to the queue</p>
|
|
<div class="fragment"><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {<span class="comment"></span></div>
|
|
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment"> /// vector to keep track of visited vertices</span></div>
|
|
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment"></span> <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<bool></a> visited(<a class="code" href="../../df/dce/namespacegraph.html">graph</a>.size(), <span class="keyword">false</span>);<span class="comment"></span></div>
|
|
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="comment"> /// queue that stores vertices that need to be further explored</span></div>
|
|
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment"></span> <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/queue.html">std::queue<int></a> tracker;</div>
|
|
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="comment"></span> </div>
|
|
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="comment"> /// mark the starting vertex as visited</span></div>
|
|
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment"></span> visited[start] = <span class="keyword">true</span>;</div>
|
|
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  tracker.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/queue/push.html">push</a>(start);</div>
|
|
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">while</span> (!tracker.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/queue/empty.html">empty</a>()) {</div>
|
|
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">size_t</span> vertex = tracker.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/queue/front.html">front</a>();</div>
|
|
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  tracker.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/queue/pop.html">pop</a>();</div>
|
|
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> x : <a class="code" href="../../df/dce/namespacegraph.html">graph</a>[vertex]) {<span class="comment"></span></div>
|
|
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="comment"> /// if the vertex is not visited then mark it as visited</span></div>
|
|
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="comment"> /// and push it to the queue</span></div>
|
|
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment"></span> <span class="keywordflow">if</span> (!visited[x]) {</div>
|
|
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  visited[x] = <span class="keyword">true</span>;</div>
|
|
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  tracker.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/queue/push.html">push</a>(x);</div>
|
|
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div>
|
|
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div>
|
|
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div>
|
|
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">return</span> visited;</div>
|
|
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> }</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="../../df/dce/namespacegraph_a0e0d3bf6c8a63f8071395c53a3cd148d_cgraph.svg" width="320" height="190"><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="a2e6017a54d445819ede9adcf33240e1a"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a2e6017a54d445819ede9adcf33240e1a">◆ </a></span>depth_first_search()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void graph::depth_first_search </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< size_t >> & </td>
|
|
<td class="paramname"><em>adj</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>start</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>initiates depth first search algorithm. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">adj</td><td>adjacency list of graph </td></tr>
|
|
<tr><td class="paramname">start</td><td>vertex from where DFS starts traversing. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<div class="fragment"><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div>
|
|
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">size_t</span> vertices = adj.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
|
|
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  </div>
|
|
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<bool></a> visited(vertices, <span class="keyword">false</span>);</div>
|
|
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="../../df/dce/namespacegraph.html#a48acac475cb48614279e7ea784c32fc3">explore</a>(adj, start, &visited);</div>
|
|
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> }</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="../../df/dce/namespacegraph_a2e6017a54d445819ede9adcf33240e1a_cgraph.svg" width="298" height="88"><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="a868530bfaed30e57290a76d5b4402d50"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a868530bfaed30e57290a76d5b4402d50">◆ </a></span>dijkstra()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int graph::dijkstra </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>< int, int >>> * </td>
|
|
<td class="paramname"><em>adj</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>s</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>t</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Function runs the dijkstra algorithm for some source vertex and target vertex in the graph and returns the shortest distance of target from the source. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">adj</td><td>input graph </td></tr>
|
|
<tr><td class="paramname">s</td><td>source vertex </td></tr>
|
|
<tr><td class="paramname">t</td><td>target vertex</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>shortest distance if target is reachable from source else -1 in case if target is not reachable from source. </dd></dl>
|
|
<p>n denotes the number of vertices in graph</p>
|
|
<p>setting all the distances initially to INF</p>
|
|
<p>creating a min heap using priority queue first element of pair contains the distance second element of pair contains the vertex</p>
|
|
<p>pushing the source vertex 's' with 0 distance in min heap</p>
|
|
<p>marking the distance of source as 0</p>
|
|
<p>second element of pair denotes the node / vertex</p>
|
|
<p>first element of pair denotes the distance</p>
|
|
<p>for all the reachable vertex from the currently exploring vertex we will try to minimize the distance</p>
|
|
<p>minimizing distances</p>
|
|
<div class="fragment"><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  {<span class="comment"></span></div>
|
|
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment"> /// n denotes the number of vertices in graph</span></div>
|
|
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment"></span> <span class="keywordtype">int</span> n = adj-><a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
|
|
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment"></span> </div>
|
|
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment"> /// setting all the distances initially to INF</span></div>
|
|
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment"></span> <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<int64_t></a> dist(n, INF);</div>
|
|
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment"></span> </div>
|
|
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment"> /// creating a min heap using priority queue</span></div>
|
|
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment"> /// first element of pair contains the distance</span></div>
|
|
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment"> /// second element of pair contains the vertex</span></div>
|
|
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment"></span> <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/priority_queue.html">std::priority_queue<std::pair<int, int></a>, <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<std::pair<int, int></a>>,</div>
|
|
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/functional/greater.html">std::greater<std::pair<int, int></a>>></div>
|
|
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  pq;</div>
|
|
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment"></span> </div>
|
|
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment"> /// pushing the source vertex 's' with 0 distance in min heap</span></div>
|
|
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment"></span> pq.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/priority_queue/push.html">push</a>(<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/pair/make_pair.html">std::make_pair</a>(0, s));</div>
|
|
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment"></span> </div>
|
|
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment"> /// marking the distance of source as 0</span></div>
|
|
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment"></span> dist[s] = 0;</div>
|
|
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  </div>
|
|
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">while</span> (!pq.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/priority_queue/empty.html">empty</a>()) {<span class="comment"></span></div>
|
|
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment"> /// second element of pair denotes the node / vertex</span></div>
|
|
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment"></span> <span class="keywordtype">int</span> currentNode = pq.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/priority_queue/top.html">top</a>().second;</div>
|
|
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment"></span> </div>
|
|
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment"> /// first element of pair denotes the distance</span></div>
|
|
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment"></span> <span class="keywordtype">int</span> currentDist = pq.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/priority_queue/top.html">top</a>().first;</div>
|
|
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  </div>
|
|
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  pq.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/priority_queue/pop.html">pop</a>();</div>
|
|
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment"></span> </div>
|
|
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment"> /// for all the reachable vertex from the currently exploring vertex</span></div>
|
|
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment"> /// we will try to minimize the distance</span></div>
|
|
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment"></span> <span class="keywordflow">for</span> (<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair<int, int></a> edge : (*adj)[currentNode]) {<span class="comment"></span></div>
|
|
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment"> /// minimizing distances</span></div>
|
|
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment"></span> <span class="keywordflow">if</span> (currentDist + edge.second < dist[edge.first]) {</div>
|
|
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  dist[edge.first] = currentDist + edge.second;</div>
|
|
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  pq.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/priority_queue/push.html">push</a>(<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/pair/make_pair.html">std::make_pair</a>(dist[edge.first], edge.first));</div>
|
|
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div>
|
|
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div>
|
|
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div>
|
|
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">if</span> (dist[t] != INF) {</div>
|
|
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">return</span> dist[t];</div>
|
|
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div>
|
|
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> -1;</div>
|
|
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> }</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="../../df/dce/namespacegraph_a868530bfaed30e57290a76d5b4402d50_cgraph.svg" width="279" height="38"><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="a8e9885e0dd49fcf8262a9868124deac9"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a8e9885e0dd49fcf8262a9868124deac9">◆ </a></span>explore() <span class="overload">[1/2]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void graph::explore </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< int >> * </td>
|
|
<td class="paramname"><em>adj</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>u</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< bool > * </td>
|
|
<td class="paramname"><em>visited</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Utility function for depth first seach algorithm this function explores the vertex which is passed into. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">adj</td><td>adjacency list of graph. </td></tr>
|
|
<tr><td class="paramname">u</td><td>vertex or node to be explored. </td></tr>
|
|
<tr><td class="paramname">visited</td><td>already visited vertices. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<div class="fragment"><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  {</div>
|
|
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  (*visited)[u] = <span class="keyword">true</span>;</div>
|
|
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> v : (*adj)[u]) {</div>
|
|
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span> (!(*visited)[v]) {</div>
|
|
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="../../df/dce/namespacegraph.html#a8e9885e0dd49fcf8262a9868124deac9">explore</a>(adj, v, visited);</div>
|
|
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div>
|
|
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div>
|
|
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> }</div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="a48acac475cb48614279e7ea784c32fc3"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a48acac475cb48614279e7ea784c32fc3">◆ </a></span>explore() <span class="overload">[2/2]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void graph::explore </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< size_t >> & </td>
|
|
<td class="paramname"><em>adj</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>v</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< bool > * </td>
|
|
<td class="paramname"><em>visited</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Explores the given vertex, exploring a vertex means traversing over all the vertices which are connected to the vertex that is currently being explored. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">adj</td><td>garph </td></tr>
|
|
<tr><td class="paramname">v</td><td>vertex to be explored </td></tr>
|
|
<tr><td class="paramname">visited</td><td>already visited vertices </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<div class="fragment"><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {</div>
|
|
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << v + 1 << <span class="stringliteral">" "</span>;</div>
|
|
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  (*visited)[v] = <span class="keyword">true</span>;</div>
|
|
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> x : adj[v]) {</div>
|
|
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span> (!(*visited)[x]) {</div>
|
|
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="../../df/dce/namespacegraph.html#a48acac475cb48614279e7ea784c32fc3">explore</a>(adj, x, visited);</div>
|
|
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div>
|
|
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div>
|
|
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> }</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="../../df/dce/namespacegraph_a48acac475cb48614279e7ea784c32fc3_cgraph.svg" width="267" height="38"><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="a9fc2ded2807582edf398e6d7c7114914"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a9fc2ded2807582edf398e6d7c7114914">◆ </a></span>getConnectedComponents()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int graph::getConnectedComponents </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< int >> * </td>
|
|
<td class="paramname"><em>adj</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Function that perfoms depth first search algorithm on graph and calculated the number of connected components. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">adj</td><td>adjacency list of graph.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>connected_components number of connected components in graph. </dd></dl>
|
|
<div class="fragment"><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div>
|
|
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">int</span> n = adj-><a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
|
|
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordtype">int</span> connected_components = 0;</div>
|
|
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<bool></a> visited(n, <span class="keyword">false</span>);</div>
|
|
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  </div>
|
|
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < n; i++) {</div>
|
|
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span> (!visited[i]) {</div>
|
|
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="../../df/dce/namespacegraph.html#a8e9885e0dd49fcf8262a9868124deac9">explore</a>(adj, i, &visited);</div>
|
|
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  connected_components++;</div>
|
|
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div>
|
|
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div>
|
|
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> connected_components;</div>
|
|
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> }</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="../../df/dce/namespacegraph_a9fc2ded2807582edf398e6d7c7114914_cgraph.svg" width="392" height="88"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<div class="ttc" id="apair_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a></div></div>
|
|
<div class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector< bool ></a></div></div>
|
|
<div class="ttc" id="asize_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/size.html">std::vector::size</a></div><div class="ttdeci">T size(T... args)</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 class="ttdoc">STL class.</div></div>
|
|
<div class="ttc" id="afront_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/queue/front.html">std::queue::front</a></div><div class="ttdeci">T front(T... args)</div></div>
|
|
<div class="ttc" id="abasic_ostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a></div></div>
|
|
<div class="ttc" id="anamespacegraph_html_a48acac475cb48614279e7ea784c32fc3"><div class="ttname"><a href="../../df/dce/namespacegraph.html#a48acac475cb48614279e7ea784c32fc3">graph::explore</a></div><div class="ttdeci">void explore(const std::vector< std::vector< size_t >> &adj, size_t v, std::vector< bool > *visited)</div><div class="ttdoc">Explores the given vertex, exploring a vertex means traversing over all the vertices which are connec...</div><div class="ttdef"><b>Definition:</b> depth_first_search.cpp:80</div></div>
|
|
<div class="ttc" id="apop_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/queue/pop.html">std::queue::pop</a></div><div class="ttdeci">T pop(T... args)</div></div>
|
|
<div class="ttc" id="atop_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/priority_queue/top.html">std::priority_queue::top</a></div><div class="ttdeci">T top(T... args)</div></div>
|
|
<div class="ttc" id="apriority_queue_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/priority_queue.html">std::priority_queue</a></div><div class="ttdoc">STL class.</div></div>
|
|
<div class="ttc" id="agreater_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/functional/greater.html">std::greater</a></div></div>
|
|
<div class="ttc" id="anamespacegraph_html"><div class="ttname"><a href="../../df/dce/namespacegraph.html">graph</a></div><div class="ttdoc">Graph algorithms.</div></div>
|
|
<div class="ttc" id="anamespacegraph_html_a8e9885e0dd49fcf8262a9868124deac9"><div class="ttname"><a href="../../df/dce/namespacegraph.html#a8e9885e0dd49fcf8262a9868124deac9">graph::explore</a></div><div class="ttdeci">void explore(const std::vector< std::vector< int >> *adj, int u, std::vector< bool > *visited)</div><div class="ttdoc">Utility function for depth first seach algorithm this function explores the vertex which is passed in...</div><div class="ttdef"><b>Definition:</b> connected_components.cpp:59</div></div>
|
|
<div class="ttc" id="aempty_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/queue/empty.html">std::queue::empty</a></div><div class="ttdeci">T empty(T... args)</div></div>
|
|
<div class="ttc" id="apush_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/queue/push.html">std::queue::push</a></div><div class="ttdeci">T push(T... args)</div></div>
|
|
<div class="ttc" id="amake_pair_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/pair/make_pair.html">std::make_pair</a></div><div class="ttdeci">T make_pair(T... args)</div></div>
|
|
<div class="ttc" id="anamespacegraph_html_a1a13974bfe597e853bffe91aa2d3944d"><div class="ttname"><a href="../../df/dce/namespacegraph.html#a1a13974bfe597e853bffe91aa2d3944d">graph::add_directed_edge</a></div><div class="ttdeci">void add_directed_edge(adjacency_list *graph, int u, int v)</div><div class="ttdoc">Adds a directed edge from vertex u to vertex v.</div><div class="ttdef"><b>Definition:</b> breadth_first_search.cpp:77</div></div>
|
|
<!-- 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="footer">Generated by <a href="http://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|