diff -r 78434a448b5e -r 20ae244b4779 lemon/core.h --- a/lemon/core.h Thu Dec 22 20:55:43 2011 +0100 +++ b/lemon/core.h Fri Aug 24 16:10:31 2012 +0200 @@ -1868,15 +1868,26 @@ ///this operator. If you change the outgoing arcs of ///a single node \c n, then \ref refresh(Node) "refresh(n)" is enough. /// -#ifdef DOXYGEN - Arc operator()(Node s, Node t, Arc prev=INVALID) const {} -#else - using ArcLookUp::operator() ; - Arc operator()(Node s, Node t, Arc prev) const + Arc operator()(Node s, Node t, Arc prev=INVALID) const { - return prev==INVALID?(*this)(s,t):_next[prev]; + if(prev==INVALID) + { + Arc f=INVALID; + Arc e; + for(e=_head[s]; + e!=INVALID&&_g.target(e)!=t; + e = t < _g.target(e)?_left[e]:_right[e]) ; + while(e!=INVALID) + if(_g.target(e)==t) + { + f = e; + e = _left[e]; + } + else e = _right[e]; + return f; + } + else return _next[prev]; } -#endif };