src/lemon/max_matching.h
changeset 1234 49d018060749
parent 1177 e41c2907fb49
child 1359 1581f961cfaa
     1.1 --- a/src/lemon/max_matching.h	Mon Mar 21 11:40:08 2005 +0000
     1.2 +++ b/src/lemon/max_matching.h	Mon Mar 21 11:46:13 2005 +0000
     1.3 @@ -262,16 +262,17 @@
     1.4      void lateShrink(Node v, typename Graph::template NodeMap<Node>& ear,  
     1.5  		    UFE& blossom, UFE& tree);
     1.6  
     1.7 -    void normShrink(Node v, typename Graph::NodeMap<Node>& ear,  
     1.8 +    void normShrink(Node v, typename Graph::template NodeMap<Node>& ear,  
     1.9  		    UFE& blossom, UFE& tree);
    1.10  
    1.11 -    bool noShrinkStep(Node x, typename Graph::NodeMap<Node>& ear,  
    1.12 +    bool noShrinkStep(Node x, typename Graph::template NodeMap<Node>& ear,  
    1.13  		      UFE& blossom, UFE& tree, std::queue<Node>& Q);
    1.14  
    1.15 -    void shrinkStep(Node& top, Node& middle, Node& bottom, typename Graph::NodeMap<Node>& ear,  
    1.16 +    void shrinkStep(Node& top, Node& middle, Node& bottom,
    1.17 +		    typename Graph::template NodeMap<Node>& ear,  
    1.18  		    UFE& blossom, UFE& tree, std::queue<Node>& Q);
    1.19  
    1.20 -    void augment(Node x, typename Graph::NodeMap<Node>& ear,  
    1.21 +    void augment(Node x, typename Graph::template NodeMap<Node>& ear,  
    1.22  		 UFE& blossom, UFE& tree);
    1.23  
    1.24    };
    1.25 @@ -386,9 +387,10 @@
    1.26  
    1.27  
    1.28    template <typename Graph>
    1.29 -  void MaxMatching<Graph>::normShrink(Node v, typename Graph::NodeMap<Node>& ear,  
    1.30 +  void MaxMatching<Graph>::normShrink(Node v,
    1.31 +				      typename Graph::template
    1.32 +				      NodeMap<Node>& ear,  
    1.33  				      UFE& blossom, UFE& tree) {
    1.34 -
    1.35      std::queue<Node> Q;   //queue of the unscanned nodes
    1.36      Q.push(v);  
    1.37      while ( !Q.empty() ) {
    1.38 @@ -490,8 +492,11 @@
    1.39    }
    1.40  
    1.41    template <typename Graph>
    1.42 -  bool MaxMatching<Graph>::noShrinkStep(Node x, typename Graph::NodeMap<Node>& ear,  
    1.43 -					UFE& blossom, UFE& tree, std::queue<Node>& Q) {
    1.44 +  bool MaxMatching<Graph>::noShrinkStep(Node x,
    1.45 +					typename Graph::template 
    1.46 +					NodeMap<Node>& ear,  
    1.47 +					UFE& blossom, UFE& tree,
    1.48 +					std::queue<Node>& Q) {
    1.49      for( IncEdgeIt e(g,x); e!= INVALID; ++e ) {
    1.50        Node y=g.runningNode(e);
    1.51  	
    1.52 @@ -519,8 +524,11 @@
    1.53    }
    1.54  
    1.55    template <typename Graph>
    1.56 -  void MaxMatching<Graph>::shrinkStep(Node& top, Node& middle, Node& bottom, typename Graph::NodeMap<Node>& ear,  
    1.57 -				      UFE& blossom, UFE& tree, std::queue<Node>& Q) {
    1.58 +  void MaxMatching<Graph>::shrinkStep(Node& top, Node& middle, Node& bottom,
    1.59 +				      typename Graph::template
    1.60 +				      NodeMap<Node>& ear,  
    1.61 +				      UFE& blossom, UFE& tree,
    1.62 +				      std::queue<Node>& Q) {
    1.63      ear.set(top,bottom);
    1.64      Node t=top;
    1.65      while ( t!=middle ) {
    1.66 @@ -542,7 +550,8 @@
    1.67    }
    1.68  
    1.69    template <typename Graph>
    1.70 -  void MaxMatching<Graph>::augment(Node x, typename Graph::NodeMap<Node>& ear,  
    1.71 +  void MaxMatching<Graph>::augment(Node x,
    1.72 +				   typename Graph::template NodeMap<Node>& ear,  
    1.73  				   UFE& blossom, UFE& tree) { 
    1.74      Node v=_mate[x];
    1.75      while ( v!=INVALID ) {