# HG changeset patch
# User deba
# Date 1197466555 0
# Node ID e67ec65747faf10587a55a29838ec5159d8db6b0
# Parent  8ab1d3d7dea7686fe14924fcec7ecc5351cb2f74
Bug fix

diff -r 8ab1d3d7dea7 -r e67ec65747fa lemon/circulation.h
--- a/lemon/circulation.h	Tue Dec 11 17:42:49 2007 +0000
+++ b/lemon/circulation.h	Wed Dec 12 13:35:55 2007 +0000
@@ -403,9 +403,6 @@
 	_excess->set(_g.source(e), (*_excess)[_g.source(e)] - (*_flow)[e]);
       }
 
-      typename Graph::template NodeMap<bool> reached(_g, false);
-
-
       // global relabeling tested, but in general case it provides
       // worse performance for random graphs
       _level->initStart();
@@ -436,8 +433,8 @@
 	  _excess->set(_g.source(e), (*_excess)[_g.source(e)] - (*_up)[e]);
 	} else if (_tol.positive((*_excess)[_g.target(e)] + (*_lo)[e])) {
 	  _flow->set(e, (*_lo)[e]);
-	  _excess->set(_g.target(e), (*_excess)[_g.target(e)] + (*_up)[e]);
-	  _excess->set(_g.source(e), (*_excess)[_g.source(e)] - (*_up)[e]);
+	  _excess->set(_g.target(e), (*_excess)[_g.target(e)] + (*_lo)[e]);
+	  _excess->set(_g.source(e), (*_excess)[_g.source(e)] - (*_lo)[e]);
 	} else {
 	  Value fc = -(*_excess)[_g.target(e)];
 	  _flow->set(e, fc);
@@ -471,7 +468,7 @@
 	int actlevel=(*_level)[act];
 	int mlevel=_node_num;
 	Value exc=(*_excess)[act];
-	
+
 	for(OutEdgeIt e(_g,act);e!=INVALID; ++e) {
 	  Node v = _g.target(e);
 	  Value fc=(*_up)[e]-(*_flow)[e];
@@ -488,7 +485,7 @@
 	    }
 	    else {
 	      _flow->set(e, (*_up)[e]);
-	      _excess->set(v, (*_excess)[v] + exc);
+	      _excess->set(v, (*_excess)[v] + fc);
 	      if(!_level->active(v) && _tol.positive((*_excess)[v]))
 		_level->activate(v);
 	      exc-=fc;