diff --git a/d5/d88/md__d_i_r_e_c_t_o_r_y.html b/d5/d88/md__d_i_r_e_c_t_o_r_y.html index 55756583c..801982ad0 100644 --- a/d5/d88/md__d_i_r_e_c_t_o_r_y.html +++ b/d5/d88/md__d_i_r_e_c_t_o_r_y.html @@ -236,6 +236,7 @@ Graph
Graph Algorithms.
+Check whether a given graph is bipartite or not.
for std::vector
Graph algorithms.
for IO operations for std::set
Graph Algorithms
+A bipartite graph is the one whose nodes can be divided into two disjoint sets in such a way that the nodes in a set are not connected to each other at all, i.e. no intra-set connections. The only connections that exist are that of inter-set, i.e. the nodes from one set are connected to a subset of nodes in the other set. In this implementation, using a graph in the form of adjacency list, check whether the given graph is a bipartite or not.
+References used: GeeksForGeeks
+Graphical algorithms
for std::min for assert for IO operations for limits of integral types for std::vector
| bool graph::checkBipartite | +( | +const std::vector< std::vector< int64_t > > & | +graph, | +
| + | + | int64_t | +index, | +
| + | + | std::vector< int64_t > * | +visited | +
| + | ) | ++ |
function to check whether the passed graph is bipartite or not
+| graph | is a 2D matrix whose rows or the first index signify the node and values in that row signify the nodes it is connected to |
| index | is the valus of the node currently under observation |
| visited | is the vector which stores whether a given node has been traversed or not yet |
< stores the neighbouring node indexes in squence of being reached
+insert the current node into the queue
+mark the current node as travelled
+< stores the neighbour of the current node
+check whether the neighbour node is travelled already or not
+colour the neighbouring node with different colour than the current node
+insert the neighbouring node into the queue
+if both the current node and its neighbour has the same state then it is not a bipartite graph
+return true when all the connected nodes of the current nodes are travelled and satisify all the above conditions
+| bool graph::isBipartite | +( | +const std::vector< std::vector< int64_t > > & | +graph | ) | ++ |
returns true if the given graph is bipartite else returns false
+| graph | is a 2D matrix whose rows or the first index signify the node and values in that row signify the nodes it is connected to |
< stores boolean values which signify whether that node had been visited or not
+if the current node is not visited then check whether the sub-graph of that node is a bipartite or not
+