# HG changeset patch
# User Balazs Dezso <deba@google.com>
# Date 1375995370 7200
# Node ID 792b426a35f09fd812e47cad01461e3f7aea6e1e
# Parent 4000b7ef4e0104ecb1801bf6cf116ca5dc32c056
Fix biNodeConnected() function
diff r 4000b7ef4e01 r 792b426a35f0 lemon/connectivity.h
a

b


745  745  /// \brief Check whether an undirected graph is binodeconnected. 
746  746  /// 
747  747  /// This function checks whether the given undirected graph is 
748   /// binodeconnected, i.e. any two edges are on same circle. 
 748  /// binodeconnected, i.e. a connected graph without articulation 
 749  /// node. 
749  750  /// 
750  751  /// \return \c true if the graph binodeconnected. 
751  752  /// \note By definition, the empty graph is binodeconnected. 
… 
… 

753  754  /// \see countBiNodeConnectedComponents(), biNodeConnectedComponents() 
754  755  template <typename Graph> 
755  756  bool biNodeConnected(const Graph& graph) { 
 757  bool hasNonIsolated = false, hasIsolated = false; 
 758  for (typename Graph::NodeIt n(graph); n != INVALID; ++n) { 
 759  if (typename Graph::OutArcIt(graph, n) == INVALID) { 
 760  if (hasIsolated  hasNonIsolated) { 
 761  return false; 
 762  } else { 
 763  hasIsolated = true; 
 764  } 
 765  } else { 
 766  if (hasIsolated) { 
 767  return false; 
 768  } else { 
 769  hasNonIsolated = true; 
 770  } 
 771  } 
 772  } 
756  773  return countBiNodeConnectedComponents(graph) <= 1; 
757  774  } 
758  775  
diff r 4000b7ef4e01 r 792b426a35f0 test/connectivity_test.cc
a

b


99  99  } 
100  100  
101  101  { 
 102  ListGraph g; 
 103  ListGraph::NodeMap<bool> map(g); 
 104  
 105  ListGraph::Node n1 = g.addNode(); 
 106  ListGraph::Node n2 = g.addNode(); 
 107  
 108  ListGraph::Edge e1 = g.addEdge(n1, n2); 
 109  ::lemon::ignore_unused_variable_warning(e1); 
 110  check(biNodeConnected(g), "Graph is binodeconnected"); 
 111  
 112  ListGraph::Node n3 = g.addNode(); 
 113  ::lemon::ignore_unused_variable_warning(n3); 
 114  check(!biNodeConnected(g), "Graph is not binodeconnected"); 
 115  } 
 116  
 117  
 118  { 
102  119  Digraph d; 
103  120  Digraph::NodeMap<int> order(d); 
104  121  Graph g(d); 