diff -r d9cfac072869 -r 4c0a23bd70b5 lemon/elevator.h --- a/lemon/elevator.h Tue Nov 20 21:40:55 2007 +0000 +++ b/lemon/elevator.h Wed Nov 21 13:34:38 2007 +0000 @@ -50,11 +50,13 @@ template class Elevator { - private: + public: typedef Item Key; typedef int Value; + private: + typedef typename std::vector::iterator Vit; typedef typename ItemSetTraits::template Map::Type VitMap; typedef typename ItemSetTraits::template Map::Type IntMap; @@ -377,6 +379,16 @@ _level[i]=new_level; if(new_level>_highest_active) _highest_active=new_level; } + + ///Mark the node as it did not reach the max level + + ///Mark the node as it did not reach the max level. It sets the + ///level of the node to a low value, which is not connected to the + ///real levels of elevator. The node should be lifted previously + ///to the top level. + void markToBottom(Item i) { + _level[i] = - _max_level; + } ///Lift all nodes on and above a level to the top (and deactivate them). @@ -491,11 +503,13 @@ ///Graph::Edge, Graph::UEdge) template class LinkedElevator { - private: + public: typedef Item Key; typedef int Value; + private: + typedef typename ItemSetTraits:: template Map::Type ItemMap; typedef typename ItemSetTraits:: @@ -882,6 +896,16 @@ } } + ///Mark the node as it did not reach the max level + + ///Mark the node as it did not reach the max level. It sets the + ///level of the node to a low value, which is not connected to the + ///real levels of elevator. The node should be lifted previously + ///to the top level. + void markToBottom(Item i) { + _level[i] = - _max_level; + } + ///Lift all nodes on and above a level to the top (and deactivate them). ///This function lifts all nodes on and above level \c l to \c