[Lemon-commits] alpar: r3283 - lemon/trunk/lemon
Lemon SVN
svn at lemon.cs.elte.hu
Tue Jun 5 12:57:30 CEST 2007
Author: alpar
Date: Tue Jun 5 12:57:26 2007
New Revision: 3283
Modified:
lemon/trunk/lemon/euler.h
Log:
- Fix a serious bug in UEulerIt
- Add a conversion to UEdge
- Make some member funtions to be 'const'
Modified: lemon/trunk/lemon/euler.h
==============================================================================
--- lemon/trunk/lemon/euler.h (original)
+++ lemon/trunk/lemon/euler.h Tue Jun 5 12:57:26 2007
@@ -149,6 +149,7 @@
typedef typename Graph::Node Node;
typedef typename Graph::NodeIt NodeIt;
typedef typename Graph::Edge Edge;
+ typedef typename Graph::UEdge UEdge;
typedef typename Graph::EdgeIt EdgeIt;
typedef typename Graph::OutEdgeIt OutEdgeIt;
typedef typename Graph::InEdgeIt InEdgeIt;
@@ -172,16 +173,22 @@
for(NodeIt n(g);n!=INVALID;++n) nedge[n]=OutEdgeIt(g,n);
while(nedge[start]!=INVALID) {
euler.push_back(nedge[start]);
+ visited[nedge[start]]=true;
Node next=g.target(nedge[start]);
++nedge[start];
- start=next; while(nedge[start]!=INVALID && visited[nedge[start]]) ++nedge[start];
+ start=next;
+ while(nedge[start]!=INVALID && visited[nedge[start]]) ++nedge[start];
}
}
///Edge Conversion
- operator Edge() { return euler.empty()?INVALID:euler.front(); }
- bool operator==(Invalid) { return euler.empty(); }
- bool operator!=(Invalid) { return !euler.empty(); }
+ operator Edge() const { return euler.empty()?INVALID:euler.front(); }
+ ///Edge Conversion
+ operator UEdge() const { return euler.empty()?INVALID:euler.front(); }
+ ///\e
+ bool operator==(Invalid) const { return euler.empty(); }
+ ///\e
+ bool operator!=(Invalid) const { return !euler.empty(); }
///Next edge of the tour
UEulerIt &operator++() {
@@ -194,6 +201,7 @@
if(nedge[s]==INVALID) break;
else {
euler.insert(next,nedge[s]);
+ visited[nedge[s]]=true;
Node n=g.target(nedge[s]);
++nedge[s];
s=n;
More information about the Lemon-commits
mailing list