src/work/marci/graph_wrapper.h
changeset 212 c07e4dd32438
parent 199 98b93792541e
child 230 734dd0649941
     1.1 --- a/src/work/marci/graph_wrapper.h	Fri Mar 19 22:16:05 2004 +0000
     1.2 +++ b/src/work/marci/graph_wrapper.h	Sat Mar 20 11:19:00 2004 +0000
     1.3 @@ -29,19 +29,19 @@
     1.4      void setGraph(Graph& _graph) { graph = &_graph; }
     1.5      Graph& getGraph() const { return (*graph); }
     1.6      
     1.7 -    template<typename I> I& /*getF*/first(I& i) const { return graph->/*getF*/first(i); }
     1.8 -    template<typename I, typename P> I& /*getF*/first(I& i, const P& p) const { 
     1.9 -      return graph->/*getF*/first(i, p); }
    1.10 +    template<typename I> I& first(I& i) const { return graph->first(i); }
    1.11 +    template<typename I, typename P> I& first(I& i, const P& p) const { 
    1.12 +      return graph->first(i, p); }
    1.13      
    1.14      template<typename I> I getNext(const I& i) const { 
    1.15        return graph->getNext(i); }
    1.16      template<typename I> I& next(I &i) const { return graph->next(i); }    
    1.17  
    1.18      template< typename It > It first() const { 
    1.19 -      It e; /*getF*/first(e); return e; }
    1.20 +      It e; first(e); return e; }
    1.21  
    1.22      template< typename It > It first(const Node& v) const { 
    1.23 -      It e; /*getF*/first(e, v); return e; }
    1.24 +      It e; first(e, v); return e; }
    1.25  
    1.26      Node head(const Edge& e) const { return graph->head(e); }
    1.27      Node tail(const Edge& e) const { return graph->tail(e); }
    1.28 @@ -85,6 +85,81 @@
    1.29      };
    1.30    };
    1.31  
    1.32 +  template<typename GraphWrapper>
    1.33 +  class GraphWrapperSkeleton {
    1.34 +  protected:
    1.35 +    GraphWrapper gw;
    1.36 +  
    1.37 +  public:
    1.38 +    typedef typename GraphWrapper::BaseGraph BaseGraph;
    1.39 +
    1.40 +    typedef typename GraphWrapper::Node Node;
    1.41 +    typedef typename GraphWrapper::NodeIt NodeIt;
    1.42 +
    1.43 +    typedef typename GraphWrapper::Edge Edge;
    1.44 +    typedef typename GraphWrapper::OutEdgeIt OutEdgeIt;
    1.45 +    typedef typename GraphWrapper::InEdgeIt InEdgeIt;
    1.46 +    //typedef typename GraphWrapper::SymEdgeIt SymEdgeIt;
    1.47 +    typedef typename GraphWrapper::EdgeIt EdgeIt;
    1.48 +
    1.49 +    //GraphWrapperSkeleton() : gw() { }
    1.50 +    GraphWrapperSkeleton(GraphWrapper& _gw) : gw(_gw) { }
    1.51 +
    1.52 +    void setGraph(BaseGraph& _graph) { gw.setGraph(_graph); }
    1.53 +    BaseGraph& getGraph() const { return gw.getGraph(); }
    1.54 +    
    1.55 +    template<typename I> I& first(I& i) const { return gw.first(i); }
    1.56 +    template<typename I, typename P> I& first(I& i, const P& p) const { 
    1.57 +      return gw.first(i, p); }
    1.58 +    
    1.59 +    template<typename I> I getNext(const I& i) const { return gw.getNext(i); }
    1.60 +    template<typename I> I& next(I &i) const { return gw.next(i); }    
    1.61 +
    1.62 +    template< typename It > It first() const { 
    1.63 +      It e; this->first(e); return e; }
    1.64 +
    1.65 +    template< typename It > It first(const Node& v) const { 
    1.66 +      It e; this->first(e, v); return e; }
    1.67 +
    1.68 +    Node head(const Edge& e) const { return gw.head(e); }
    1.69 +    Node tail(const Edge& e) const { return gw.tail(e); }
    1.70 +
    1.71 +    template<typename I> bool valid(const I& i) const { return gw.valid(i); }
    1.72 +  
    1.73 +    //template<typename I> void setInvalid(const I &i);
    1.74 +    //{ return graph->setInvalid(i); }
    1.75 +
    1.76 +    int nodeNum() const { return gw.nodeNum(); }
    1.77 +    int edgeNum() const { return gw.edgeNum(); }
    1.78 +  
    1.79 +    template<typename I> Node aNode(const I& e) const { return gw.aNode(e); }
    1.80 +    template<typename I> Node bNode(const I& e) const { return gw.bNode(e); }
    1.81 +  
    1.82 +    Node addNode() const { return gw.addNode(); }
    1.83 +    Edge addEdge(const Node& tail, const Node& head) const { 
    1.84 +      return gw.addEdge(tail, head); }
    1.85 +  
    1.86 +    template<typename I> void erase(const I& i) const { gw.erase(i); }
    1.87 +  
    1.88 +    void clear() const { gw.clear(); }
    1.89 +    
    1.90 +    template<typename T> class NodeMap : public GraphWrapper::NodeMap<T> { 
    1.91 +    public:
    1.92 +      NodeMap(const GraphWrapperSkeleton<GraphWrapper>& _G) : 
    1.93 +	GraphWrapper::NodeMap<T>(_G.gw) { }
    1.94 +      NodeMap(const GraphWrapperSkeleton<GraphWrapper>& _G, T a) : 
    1.95 +	GraphWrapper::NodeMap<T>(_G.gw, a) { }
    1.96 +    };
    1.97 +
    1.98 +    template<typename T> class EdgeMap : public GraphWrapper::EdgeMap<T> { 
    1.99 +    public:
   1.100 +      EdgeMap(const GraphWrapperSkeleton<GraphWrapper>& _G) : 
   1.101 +	GraphWrapper::EdgeMap<T>(_G.gw) { }
   1.102 +      EdgeMap(const GraphWrapperSkeleton<GraphWrapper>& _G, T a) : 
   1.103 +	GraphWrapper::EdgeMap<T>(_G.gw, a) { }
   1.104 +    };
   1.105 +  };
   1.106 +
   1.107    template<typename Graph>
   1.108    class RevGraphWrapper
   1.109    {
   1.110 @@ -109,19 +184,19 @@
   1.111      void setGraph(Graph& _graph) { graph = &_graph; }
   1.112      Graph& getGraph() const { return (*graph); }
   1.113      
   1.114 -    template<typename I> I& /*getF*/first(I& i) const { return graph->/*getF*/first(i); }
   1.115 -    template<typename I, typename P> I& /*getF*/first(I& i, const P& p) const { 
   1.116 -      return graph->/*getF*/first(i, p); }
   1.117 +    template<typename I> I& first(I& i) const { return graph->first(i); }
   1.118 +    template<typename I, typename P> I& first(I& i, const P& p) const { 
   1.119 +      return graph->first(i, p); }
   1.120  
   1.121      template<typename I> I getNext(const I& i) const { 
   1.122        return graph->getNext(i); }
   1.123      template<typename I> I& next(I &i) const { return graph->next(i); }    
   1.124  
   1.125      template< typename It > It first() const { 
   1.126 -      It e; /*getF*/first(e); return e; }
   1.127 +      It e; first(e); return e; }
   1.128  
   1.129      template< typename It > It first(const Node& v) const { 
   1.130 -      It e; /*getF*/first(e, v); return e; }
   1.131 +      It e; first(e, v); return e; }
   1.132  
   1.133      Node head(const Edge& e) const { return graph->tail(e); }
   1.134      Node tail(const Edge& e) const { return graph->head(e); }
   1.135 @@ -227,20 +302,20 @@
   1.136        OutEdgeIt(const Invalid& i) : Edge(i) { }
   1.137        OutEdgeIt(const UndirGraphWrapper& _G, const Node& n) : Edge() { 
   1.138  	out_or_in=true;
   1.139 -	_G.graph->/*getF*/first(out, n);
   1.140 +	_G.graph->first(out, n);
   1.141  	if (!(_G.graph->valid(out))) {
   1.142  	  out_or_in=false;
   1.143 -	  _G.graph->/*getF*/first(in, n);
   1.144 +	  _G.graph->first(in, n);
   1.145  	}
   1.146        }
   1.147      };
   1.148  
   1.149 -    OutEdgeIt& /*getF*/first(OutEdgeIt& e, const Node& n) const {
   1.150 +    OutEdgeIt& first(OutEdgeIt& e, const Node& n) const {
   1.151        e.out_or_in=true;
   1.152 -      graph->/*getF*/first(e.out, n);
   1.153 +      graph->first(e.out, n);
   1.154        if (!(graph->valid(e.out))) {
   1.155  	e.out_or_in=false;
   1.156 -	graph->/*getF*/first(e.in, n);
   1.157 +	graph->first(e.in, n);
   1.158        }
   1.159        return e;
   1.160      }
   1.161 @@ -251,7 +326,7 @@
   1.162  	graph->next(e.out);
   1.163  	if (!graph->valid(e.out)) {
   1.164  	  e.out_or_in=false;
   1.165 -	  graph->/*getF*/first(e.in, n);
   1.166 +	  graph->first(e.in, n);
   1.167  	}
   1.168        } else {
   1.169  	graph->next(e.in);
   1.170 @@ -266,19 +341,19 @@
   1.171  
   1.172      typedef OutEdgeIt InEdgeIt; 
   1.173  
   1.174 -    template<typename I> I& /*getF*/first(I& i) const { return graph->/*getF*/first(i); }
   1.175 -//     template<typename I, typename P> I& /*getF*/first(I& i, const P& p) const { 
   1.176 -//       return graph->/*getF*/first(i, p); }
   1.177 +    template<typename I> I& first(I& i) const { return graph->first(i); }
   1.178 +//     template<typename I, typename P> I& first(I& i, const P& p) const { 
   1.179 +//       return graph->first(i, p); }
   1.180      
   1.181      template<typename I> I getNext(const I& i) const { 
   1.182        return graph->getNext(i); }
   1.183      template<typename I> I& next(I &i) const { return graph->next(i); }    
   1.184  
   1.185      template< typename It > It first() const { 
   1.186 -      It e; /*getF*/first(e); return e; }
   1.187 +      It e; first(e); return e; }
   1.188  
   1.189      template< typename It > It first(const Node& v) const { 
   1.190 -      It e; /*getF*/first(e, v); return e; }
   1.191 +      It e; first(e, v); return e; }
   1.192  
   1.193      Node head(const Edge& e) const { return graph->head(e); }
   1.194      Node tail(const Edge& e) const { return graph->tail(e); }
   1.195 @@ -348,17 +423,17 @@
   1.196  //     int nodeNum() const { return graph->nodeNum(); }
   1.197  //     int edgeNum() const { return graph->edgeNum(); }
   1.198      
   1.199 -//     template<typename I> I& /*getF*/first(I& i) const { return graph->/*getF*/first(i); }
   1.200 -//     template<typename I, typename P> I& /*getF*/first(I& i, const P& p) const { 
   1.201 -//       return graph->/*getF*/first(i, p); }
   1.202 +//     template<typename I> I& first(I& i) const { return graph->first(i); }
   1.203 +//     template<typename I, typename P> I& first(I& i, const P& p) const { 
   1.204 +//       return graph->first(i, p); }
   1.205  //     //template<typename I> I next(const I i); { return graph->goNext(i); }
   1.206  //     //template<typename I> I &goNext(I &i); { return graph->goNext(i); }
   1.207  
   1.208  //     template< typename It > It first() const { 
   1.209 -//       It e; /*getF*/first(e); return e; }
   1.210 +//       It e; first(e); return e; }
   1.211  
   1.212  //     template< typename It > It first(Node v) const { 
   1.213 -//       It e; /*getF*/first(e, v); return e; }
   1.214 +//       It e; first(e, v); return e; }
   1.215  
   1.216  //     Node head(const Edge& e) const { return graph->head(e); }
   1.217  //     Node tail(const Edge& e) const { return graph->tail(e); }
   1.218 @@ -455,11 +530,11 @@
   1.219        OutEdgeIt(const Invalid& i) : Edge(i) { }
   1.220      private:
   1.221        OutEdgeIt(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& resG, Node v) : Edge() { 
   1.222 -	resG.graph->/*getF*/first(out, v);
   1.223 +	resG.graph->first(out, v);
   1.224  	while( resG.graph->valid(out) && !(resG.free(out)>0) ) { resG.graph->next(out); }
   1.225  	if (!resG.graph->valid(out)) {
   1.226  	  out_or_in=0;
   1.227 -	  resG.graph->/*getF*/first(in, v);
   1.228 +	  resG.graph->first(in, v);
   1.229  	  while( resG.graph->valid(in) && !(resG.free(in)>0) ) { resG.graph->next(in); }
   1.230  	}
   1.231        }
   1.232 @@ -471,7 +546,7 @@
   1.233  // 	  while( out.valid() && !(Edge::free()>0) ) { ++out; }
   1.234  // 	  if (!out.valid()) {
   1.235  // 	    out_or_in=0;
   1.236 -// 	    G->/*getF*/first(in, v); 
   1.237 +// 	    G->first(in, v); 
   1.238  // 	    while( in.valid() && !(Edge::free()>0) ) { ++in; }
   1.239  // 	  }
   1.240  // 	} else {
   1.241 @@ -490,22 +565,22 @@
   1.242        //EdgeIt(const EdgeIt& e) : Edge(e), v(e.v) { }
   1.243        EdgeIt(const Invalid& i) : Edge(i) { }
   1.244        EdgeIt(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& resG) : Edge() { 
   1.245 -	resG.graph->/*getF*/first(v);
   1.246 -	if (resG.graph->valid(v)) resG.graph->/*getF*/first(out, v); else out=OldOutEdgeIt(INVALID);
   1.247 +	resG.graph->first(v);
   1.248 +	if (resG.graph->valid(v)) resG.graph->first(out, v); else out=OldOutEdgeIt(INVALID);
   1.249  	while (resG.graph->valid(out) && !(resG.free(out)>0) ) { resG.graph->next(out); }
   1.250  	while (resG.graph->valid(v) && !resG.graph->valid(out)) { 
   1.251  	  resG.graph->next(v); 
   1.252 -	  if (resG.graph->valid(v)) resG.graph->/*getF*/first(out, v); 
   1.253 +	  if (resG.graph->valid(v)) resG.graph->first(out, v); 
   1.254  	  while (resG.graph->valid(out) && !(resG.free(out)>0) ) { resG.graph->next(out); }
   1.255  	}
   1.256  	if (!resG.graph->valid(out)) {
   1.257  	  out_or_in=0;
   1.258 -	  resG.graph->/*getF*/first(v);
   1.259 -	  if (resG.graph->valid(v)) resG.graph->/*getF*/first(in, v); else in=OldInEdgeIt(INVALID);
   1.260 +	  resG.graph->first(v);
   1.261 +	  if (resG.graph->valid(v)) resG.graph->first(in, v); else in=OldInEdgeIt(INVALID);
   1.262  	  while (resG.graph->valid(in) && !(resG.free(in)>0) ) { resG.graph->next(in); }
   1.263  	  while (resG.graph->valid(v) && !resG.graph->valid(in)) { 
   1.264  	    resG.graph->next(v); 
   1.265 -	    if (resG.graph->valid(v)) resG.graph->/*getF*/first(in, v); 
   1.266 +	    if (resG.graph->valid(v)) resG.graph->first(in, v); 
   1.267  	    while (resG.graph->valid(in) && !(resG.free(in)>0) ) { resG.graph->next(in); }
   1.268  	  }
   1.269  	}
   1.270 @@ -516,17 +591,17 @@
   1.271  // 	  while (out.valid() && !(Edge::free()>0) ) { ++out; }
   1.272  // 	  while (v.valid() && !out.valid()) { 
   1.273  // 	    ++v; 
   1.274 -// 	    if (v.valid()) G->/*getF*/first(out, v); 
   1.275 +// 	    if (v.valid()) G->first(out, v); 
   1.276  // 	    while (out.valid() && !(Edge::free()>0) ) { ++out; }
   1.277  // 	  }
   1.278  // 	  if (!out.valid()) {
   1.279  // 	    out_or_in=0;
   1.280 -// 	    G->/*getF*/first(v);
   1.281 -// 	    if (v.valid()) G->/*getF*/first(in, v); else in=OldInEdgeIt();
   1.282 +// 	    G->first(v);
   1.283 +// 	    if (v.valid()) G->first(in, v); else in=OldInEdgeIt();
   1.284  // 	    while (in.valid() && !(Edge::free()>0) ) { ++in; }
   1.285  // 	    while (v.valid() && !in.valid()) { 
   1.286  // 	      ++v; 
   1.287 -// 	      if (v.valid()) G->/*getF*/first(in, v); 
   1.288 +// 	      if (v.valid()) G->first(in, v); 
   1.289  // 	      while (in.valid() && !(Edge::free()>0) ) { ++in; }
   1.290  // 	    }  
   1.291  // 	  }
   1.292 @@ -535,7 +610,7 @@
   1.293  // 	  while (in.valid() && !(Edge::free()>0) ) { ++in; }
   1.294  // 	  while (v.valid() && !in.valid()) { 
   1.295  // 	    ++v; 
   1.296 -// 	    if (v.valid()) G->/*getF*/first(in, v); 
   1.297 +// 	    if (v.valid()) G->first(in, v); 
   1.298  // 	    while (in.valid() && !(Edge::free()>0) ) { ++in; }
   1.299  // 	  }
   1.300  // 	}
   1.301 @@ -543,12 +618,12 @@
   1.302  //       }
   1.303      };
   1.304  
   1.305 -    NodeIt& /*getF*/first(NodeIt& v) const { return graph->/*getF*/first(v); }
   1.306 -    OutEdgeIt& /*getF*/first(OutEdgeIt& e, Node v) const { 
   1.307 +    NodeIt& first(NodeIt& v) const { return graph->first(v); }
   1.308 +    OutEdgeIt& first(OutEdgeIt& e, Node v) const { 
   1.309        e=OutEdgeIt(*this, v); 
   1.310        return e;
   1.311      }
   1.312 -    EdgeIt& /*getF*/first(EdgeIt& e) const { 
   1.313 +    EdgeIt& first(EdgeIt& e) const { 
   1.314        e=EdgeIt(*this); 
   1.315        return e;
   1.316      }
   1.317 @@ -562,7 +637,7 @@
   1.318  	while( graph->valid(e.out) && !(free(e.out)>0) ) { graph->next(e.out); }
   1.319  	if (!graph->valid(e.out)) {
   1.320  	  e.out_or_in=0;
   1.321 -	  graph->/*getF*/first(e.in, v); 
   1.322 +	  graph->first(e.in, v); 
   1.323  	  while( graph->valid(e.in) && !(free(e.in)>0) ) { graph->next(e.in); }
   1.324  	}
   1.325        } else {
   1.326 @@ -578,17 +653,17 @@
   1.327  	while (graph->valid(e.out) && !(free(e.out)>0) ) { graph->next(e.out); }
   1.328  	  while (graph->valid(e.v) && !graph->valid(e.out)) { 
   1.329  	    graph->next(e.v); 
   1.330 -	    if (graph->valid(e.v)) graph->/*getF*/first(e.out, e.v); 
   1.331 +	    if (graph->valid(e.v)) graph->first(e.out, e.v); 
   1.332  	    while (graph->valid(e.out) && !(free(e.out)>0) ) { graph->next(e.out); }
   1.333  	  }
   1.334  	  if (!graph->valid(e.out)) {
   1.335  	    e.out_or_in=0;
   1.336 -	    graph->/*getF*/first(e.v);
   1.337 -	    if (graph->valid(e.v)) graph->/*getF*/first(e.in, e.v); else e.in=OldInEdgeIt(INVALID);
   1.338 +	    graph->first(e.v);
   1.339 +	    if (graph->valid(e.v)) graph->first(e.in, e.v); else e.in=OldInEdgeIt(INVALID);
   1.340  	    while (graph->valid(e.in) && !(free(e.in)>0) ) { graph->next(e.in); }
   1.341  	    while (graph->valid(e.v) && !graph->valid(e.in)) { 
   1.342  	      graph->next(e.v); 
   1.343 -	      if (graph->valid(e.v)) graph->/*getF*/first(e.in, e.v); 
   1.344 +	      if (graph->valid(e.v)) graph->first(e.in, e.v); 
   1.345  	      while (graph->valid(e.in) && !(free(e.in)>0) ) { graph->next(e.in); }
   1.346  	    }  
   1.347  	  }
   1.348 @@ -597,7 +672,7 @@
   1.349  	  while (graph->valid(e.in) && !(free(e.in)>0) ) { graph->next(e.in); }
   1.350  	  while (graph->valid(e.v) && !graph->valid(e.in)) { 
   1.351  	    graph->next(e.v); 
   1.352 -	    if (graph->valid(e.v)) graph->/*getF*/first(e.in, e.v); 
   1.353 +	    if (graph->valid(e.v)) graph->first(e.in, e.v); 
   1.354  	    while (graph->valid(e.in) && !(free(e.in)>0) ) { graph->next(e.in); }
   1.355  	  }
   1.356  	}
   1.357 @@ -608,14 +683,14 @@
   1.358      template< typename It >
   1.359      It first() const { 
   1.360        It e;
   1.361 -      /*getF*/first(e);
   1.362 +      first(e);
   1.363        return e; 
   1.364      }
   1.365  
   1.366      template< typename It >
   1.367      It first(Node v) const { 
   1.368        It e;
   1.369 -      /*getF*/first(e, v);
   1.370 +      first(e, v);
   1.371        return e; 
   1.372      }
   1.373  
   1.374 @@ -708,7 +783,7 @@
   1.375        first_out_edges(*this) /*, dist(*this)*/ { 
   1.376        for(NodeIt n=this->template first<NodeIt>(); this->valid(n); this->next(n)) {
   1.377  	OutEdgeIt e;
   1.378 -	ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::/*getF*/first(e, n);
   1.379 +	ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::first(e, n);
   1.380  	first_out_edges.set(n, e);
   1.381        }
   1.382      }
   1.383 @@ -739,28 +814,28 @@
   1.384      //typedef typename Graph::SymEdgeIt SymEdgeIt;
   1.385      //typedef typename ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::EdgeIt EdgeIt;
   1.386  
   1.387 -    NodeIt& /*getF*/first(NodeIt& n) const { 
   1.388 -      return ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::/*getF*/first(n);
   1.389 +    NodeIt& first(NodeIt& n) const { 
   1.390 +      return ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::first(n);
   1.391      }
   1.392  
   1.393 -    OutEdgeIt& /*getF*/first(OutEdgeIt& e, const Node& n) const { 
   1.394 +    OutEdgeIt& first(OutEdgeIt& e, const Node& n) const { 
   1.395        e=first_out_edges.get(n);
   1.396        return e;
   1.397      }
   1.398      
   1.399 -    //ROSSZ template<typename I> I& /*getF*/first(I& i) const { return /*getF*/first(i); }
   1.400 -    //ROSSZ template<typename I, typename P> I& /*getF*/first(I& i, const P& p) const { 
   1.401 -    //  return /*getF*/first(i, p); }
   1.402 +    //ROSSZ template<typename I> I& first(I& i) const { return first(i); }
   1.403 +    //ROSSZ template<typename I, typename P> I& first(I& i, const P& p) const { 
   1.404 +    //  return first(i, p); }
   1.405      
   1.406      //template<typename I> I getNext(const I& i) const { 
   1.407      //  return graph->getNext(i); }
   1.408      //template<typename I> I& next(I &i) const { return graph->next(i); }    
   1.409  
   1.410      template< typename It > It first() const { 
   1.411 -      It e; /*getF*/first(e); return e; }
   1.412 +      It e; first(e); return e; }
   1.413  
   1.414      template< typename It > It first(const Node& v) const { 
   1.415 -      It e; /*getF*/first(e, v); return e; }
   1.416 +      It e; first(e, v); return e; }
   1.417  
   1.418      //Node head(const Edge& e) const { return graph->head(e); }
   1.419      //Node tail(const Edge& e) const { return graph->tail(e); }
   1.420 @@ -838,8 +913,8 @@
   1.421        ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>(_G, _flow, _capacity), dist(*this, graph->nodeNum()) { 
   1.422      }
   1.423  
   1.424 -    OutEdgeIt& /*getF*/first(OutEdgeIt& e, const Node& n) const {
   1.425 -      ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::/*getF*/first(e, n);
   1.426 +    OutEdgeIt& first(OutEdgeIt& e, const Node& n) const {
   1.427 +      ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::first(e, n);
   1.428        while (valid(e) && (dist.get(tail(e))/*+1!=*/>=dist.get(head(e)))) 
   1.429  	ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::next(e);
   1.430        return e;
   1.431 @@ -856,8 +931,8 @@
   1.432        return e;
   1.433      }
   1.434  
   1.435 -    NodeIt& /*getF*/first(NodeIt& n) const {
   1.436 -      return ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::/*getF*/first(n);
   1.437 +    NodeIt& first(NodeIt& n) const {
   1.438 +      return ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::first(n);
   1.439      }
   1.440  
   1.441      void erase(const Edge& e) {
   1.442 @@ -874,19 +949,19 @@
   1.443      //void setGraph(Graph& _graph) { graph = &_graph; }
   1.444      //Graph& getGraph() const { return (*graph); }
   1.445      
   1.446 -    //template<typename I> I& /*getF*/first(I& i) const { return graph->/*getF*/first(i); }
   1.447 -    //template<typename I, typename P> I& /*getF*/first(I& i, const P& p) const { 
   1.448 -    //  return graph->/*getF*/first(i, p); }
   1.449 +    //template<typename I> I& first(I& i) const { return graph->first(i); }
   1.450 +    //template<typename I, typename P> I& first(I& i, const P& p) const { 
   1.451 +    //  return graph->first(i, p); }
   1.452      
   1.453      //template<typename I> I getNext(const I& i) const { 
   1.454      //  return graph->getNext(i); }
   1.455      //template<typename I> I& next(I &i) const { return graph->next(i); }    
   1.456  
   1.457      template< typename It > It first() const { 
   1.458 -      It e; /*getF*/first(e); return e; }
   1.459 +      It e; first(e); return e; }
   1.460  
   1.461      template< typename It > It first(const Node& v) const { 
   1.462 -      It e; /*getF*/first(e, v); return e; }
   1.463 +      It e; first(e, v); return e; }
   1.464  
   1.465      //Node head(const Edge& e) const { return graph->head(e); }
   1.466      //Node tail(const Edge& e) const { return graph->tail(e); }
   1.467 @@ -970,20 +1045,20 @@
   1.468  //     int nodeNum() const { return graph->nodeNum(); }
   1.469  //     int edgeNum() const { return graph->edgeNum(); }
   1.470  
   1.471 -//     Node& /*getF*/first(Node& n) const { return graph->/*getF*/first(n); }
   1.472 +//     Node& first(Node& n) const { return graph->first(n); }
   1.473  
   1.474  //     // Edge and SymEdge  is missing!!!!
   1.475  //     // Edge <-> In/OutEdgeIt conversion is missing!!!!
   1.476  
   1.477  //     //FIXME
   1.478 -//     OutEdgeIt& /*getF*/first(OutEdgeIt& e, const Node& n) const 
   1.479 +//     OutEdgeIt& first(OutEdgeIt& e, const Node& n) const 
   1.480  //       {
   1.481  // 	e.n=n;
   1.482 -// 	graph->/*getF*/first(e.o,n);
   1.483 +// 	graph->first(e.o,n);
   1.484  // 	while(graph->valid(e.o) && fmap.get(e.o)>=himap.get(e.o))
   1.485  // 	  graph->goNext(e.o);
   1.486  // 	if(!graph->valid(e.o)) {
   1.487 -// 	  graph->/*getF*/first(e.i,n);
   1.488 +// 	  graph->first(e.i,n);
   1.489  // 	  while(graph->valid(e.i) && fmap.get(e.i)<=lomap.get(e.i))
   1.490  // 	    graph->goNext(e.i);
   1.491  // 	}
   1.492 @@ -996,7 +1071,7 @@
   1.493  //   while(graph->valid(e.o) && fmap.get(e.o)>=himap.get(e.o))
   1.494  //   graph->goNext(e.o);
   1.495  //   if(graph->valid(e.o)) return e;
   1.496 -//   else graph->/*getF*/first(e.i,e.n);
   1.497 +//   else graph->first(e.i,e.n);
   1.498  //   }
   1.499  //   else {
   1.500  //   while(graph->valid(e.i) && fmap.get(e.i)<=lomap.get(e.i))
   1.501 @@ -1009,14 +1084,14 @@
   1.502  //     //bool valid(const OutEdgeIt e) { return graph->valid(e.o)||graph->valid(e.i);}
   1.503  
   1.504  //     //FIXME
   1.505 -//     InEdgeIt& /*getF*/first(InEdgeIt& e, const Node& n) const 
   1.506 +//     InEdgeIt& first(InEdgeIt& e, const Node& n) const 
   1.507  //       {
   1.508  // 	e.n=n;
   1.509 -// 	graph->/*getF*/first(e.i,n);
   1.510 +// 	graph->first(e.i,n);
   1.511  // 	while(graph->valid(e.i) && fmap.get(e.i)>=himap.get(e.i))
   1.512  // 	  graph->goNext(e.i);
   1.513  // 	if(!graph->valid(e.i)) {
   1.514 -// 	  graph->/*getF*/first(e.o,n);
   1.515 +// 	  graph->first(e.o,n);
   1.516  // 	  while(graph->valid(e.o) && fmap.get(e.o)<=lomap.get(e.o))
   1.517  // 	    graph->goNext(e.o);
   1.518  // 	}
   1.519 @@ -1029,7 +1104,7 @@
   1.520  //   while(graph->valid(e.i) && fmap.get(e.i)>=himap.get(e.i))
   1.521  //   graph->goNext(e.i);
   1.522  //   if(graph->valid(e.i)) return e;
   1.523 -//   else graph->/*getF*/first(e.o,e.n);
   1.524 +//   else graph->first(e.o,e.n);
   1.525  //   }
   1.526  //   else {
   1.527  //   while(graph->valid(e.o) && fmap.get(e.o)<=lomap.get(e.o))
   1.528 @@ -1045,10 +1120,10 @@
   1.529  //     //template<typename I> I next(const I i); { return graph->goNext(i); }
   1.530  
   1.531  //     template< typename It > It first() const { 
   1.532 -//       It e; /*getF*/first(e); return e; }
   1.533 +//       It e; first(e); return e; }
   1.534  
   1.535  //     template< typename It > It first(Node v) const { 
   1.536 -//       It e; /*getF*/first(e, v); return e; }
   1.537 +//       It e; first(e, v); return e; }
   1.538  
   1.539  //     Node head(const Edge& e) const { return graph->head(e); }
   1.540  //     Node tail(const Edge& e) const { return graph->tail(e); }