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 ) {