COIN-OR::LEMON - Graph Library

Changeset 259:509ba9f136d2 in lemon-0.x


Ignore:
Timestamp:
03/29/04 18:00:00 (20 years ago)
Author:
marci
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@364
Message:

ResGraphWrapper? partial improvement

Location:
src/work
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • src/work/edmonds_karp.h

    r243 r259  
    11// -*- c++ -*-
    2 #ifndef EDMONDS_KARP_H
    3 #define EDMONDS_KARP_H
     2#ifndef HUGO_EDMONDS_KARP_H
     3#define HUGO_EDMONDS_KARP_H
    44
    55#include <algorithm>
     
    11051105} // namespace hugo
    11061106
    1107 #endif //EDMONDS_KARP_H
     1107#endif //HUGO_EDMONDS_KARP_H
  • src/work/marci/dimacs.h

    r206 r259  
    11// -*- c++ -*-
    2 #ifndef DIMACS_H
    3 #define DIMACS_H
     2#ifndef HUGO_DIMACS_H
     3#define HUGO_DIMACS_H
    44
    55#include <iostream>
     
    5858} //namespace hugo
    5959
    60 #endif //DIMACS_H
     60#endif //HUGO_DIMACS_H
  • src/work/marci/graph_wrapper.h

    r239 r259  
    11// -*- c++ -*-
    2 #ifndef GRAPH_WRAPPER_H
    3 #define GRAPH_WRAPPER_H
     2#ifndef HUGO_GRAPH_WRAPPER_H
     3#define HUGO_GRAPH_WRAPPER_H
    44
    55#include <invalid.h>
     
    771771  class ResGraphWrapper {
    772772  public:
    773     typedef Graph BaseGraph;
     773    //typedef Graph BaseGraph;
    774774    typedef typename Graph::Node Node;
    775775    typedef typename Graph::NodeIt NodeIt;
     
    778778    typedef typename Graph::InEdgeIt OldInEdgeIt;
    779779  protected:
    780     const Graph* graph;
     780    //const Graph* graph;
     781    typedef TrivGraphWrapper<const Graph> GraphWrapper;
     782    GraphWrapper gw;
    781783    FlowMap* flow;
    782784    const CapacityMap* capacity;
     
    785787    ResGraphWrapper(const Graph& _G, FlowMap& _flow,
    786788             const CapacityMap& _capacity) :
    787       graph(&_G), flow(&_flow), capacity(&_capacity) { }
    788 
    789     void setGraph(const Graph& _graph) { graph = &_graph; }
    790     const Graph& getGraph() const { return (*graph); }
     789      gw(_G), flow(&_flow), capacity(&_capacity) { }
     790
     791    //void setGraph(const Graph& _graph) { graph = &_graph; }
     792    //const Graph& getGraph() const { return (*graph); }
    791793
    792794    class Edge;
     
    830832    private:
    831833      OutEdgeIt(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& resG, Node v) : Edge() {
    832         resG.graph->first(out, v);
    833         while( resG.graph->valid(out) && !(resG.free(out)>0) ) { resG.graph->next(out); }
    834         if (!resG.graph->valid(out)) {
     834        resG.gw.first(out, v);
     835        while( resG.gw.valid(out) && !(resG.free(out)>0) ) { resG.gw.next(out); }
     836        if (!resG.gw.valid(out)) {
    835837          out_or_in=0;
    836           resG.graph->first(in, v);
    837           while( resG.graph->valid(in) && !(resG.free(in)>0) ) { resG.graph->next(in); }
     838          resG.gw.first(in, v);
     839          while( resG.gw.valid(in) && !(resG.free(in)>0) ) { resG.gw.next(in); }
    838840        }
    839841      }
     
    865867      EdgeIt(const Invalid& i) : Edge(i) { }
    866868      EdgeIt(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& resG) : Edge() {
    867         resG.graph->first(v);
    868         if (resG.graph->valid(v)) resG.graph->first(out, v); else out=OldOutEdgeIt(INVALID);
    869         while (resG.graph->valid(out) && !(resG.free(out)>0) ) { resG.graph->next(out); }
    870         while (resG.graph->valid(v) && !resG.graph->valid(out)) {
    871           resG.graph->next(v);
    872           if (resG.graph->valid(v)) resG.graph->first(out, v);
    873           while (resG.graph->valid(out) && !(resG.free(out)>0) ) { resG.graph->next(out); }
     869        resG.gw.first(v);
     870        if (resG.gw.valid(v)) resG.gw.first(out, v); else out=/*OldOutEdgeIt*/(INVALID);
     871        while (resG.gw.valid(out) && !(resG.free(out)>0) ) { resG.gw.next(out); }
     872        while (resG.gw.valid(v) && !resG.gw.valid(out)) {
     873          resG.gw.next(v);
     874          if (resG.gw.valid(v)) resG.gw.first(out, v);
     875          while (resG.gw.valid(out) && !(resG.free(out)>0) ) { resG.gw.next(out); }
    874876        }
    875         if (!resG.graph->valid(out)) {
     877        if (!resG.gw.valid(out)) {
    876878          out_or_in=0;
    877           resG.graph->first(v);
    878           if (resG.graph->valid(v)) resG.graph->first(in, v); else in=OldInEdgeIt(INVALID);
    879           while (resG.graph->valid(in) && !(resG.free(in)>0) ) { resG.graph->next(in); }
    880           while (resG.graph->valid(v) && !resG.graph->valid(in)) {
    881             resG.graph->next(v);
    882             if (resG.graph->valid(v)) resG.graph->first(in, v);
    883             while (resG.graph->valid(in) && !(resG.free(in)>0) ) { resG.graph->next(in); }
     879          resG.gw.first(v);
     880          if (resG.gw.valid(v)) resG.gw.first(in, v); else in=/*OldInEdgeIt*/(INVALID);
     881          while (resG.gw.valid(in) && !(resG.free(in)>0) ) { resG.gw.next(in); }
     882          while (resG.gw.valid(v) && !resG.gw.valid(in)) {
     883            resG.gw.next(v);
     884            if (resG.gw.valid(v)) resG.gw.first(in, v);
     885            while (resG.gw.valid(in) && !(resG.free(in)>0) ) { resG.gw.next(in); }
    884886          }
    885887        }
     
    918920    };
    919921
    920     NodeIt& first(NodeIt& v) const { return graph->first(v); }
     922    NodeIt& first(NodeIt& v) const { return gw.first(v); }
    921923    OutEdgeIt& first(OutEdgeIt& e, Node v) const {
    922924      e=OutEdgeIt(*this, v);
     
    928930    }
    929931   
    930     NodeIt& next(NodeIt& n) const { return graph->next(n); }
     932    NodeIt& next(NodeIt& n) const { return gw.next(n); }
    931933
    932934    OutEdgeIt& next(OutEdgeIt& e) const {
    933935      if (e.out_or_in) {
    934         Node v=graph->aNode(e.out);
    935         graph->next(e.out);
    936         while( graph->valid(e.out) && !(free(e.out)>0) ) { graph->next(e.out); }
    937         if (!graph->valid(e.out)) {
     936        Node v=gw.aNode(e.out);
     937        gw.next(e.out);
     938        while( gw.valid(e.out) && !(free(e.out)>0) ) { gw.next(e.out); }
     939        if (!gw.valid(e.out)) {
    938940          e.out_or_in=0;
    939           graph->first(e.in, v);
    940           while( graph->valid(e.in) && !(free(e.in)>0) ) { graph->next(e.in); }
     941          gw.first(e.in, v);
     942          while( gw.valid(e.in) && !(free(e.in)>0) ) { gw.next(e.in); }
    941943        }
    942944      } else {
    943         graph->next(e.in);
    944         while( graph->valid(e.in) && !(free(e.in)>0) ) { graph->next(e.in); }
     945        gw.next(e.in);
     946        while( gw.valid(e.in) && !(free(e.in)>0) ) { gw.next(e.in); }
    945947      }
    946948      return e;
     
    949951    EdgeIt& next(EdgeIt& e) const {
    950952      if (e.out_or_in) {
    951         graph->next(e.out);
    952         while (graph->valid(e.out) && !(free(e.out)>0) ) { graph->next(e.out); }
    953           while (graph->valid(e.v) && !graph->valid(e.out)) {
    954             graph->next(e.v);
    955             if (graph->valid(e.v)) graph->first(e.out, e.v);
    956             while (graph->valid(e.out) && !(free(e.out)>0) ) { graph->next(e.out); }
     953        gw.next(e.out);
     954        while (gw.valid(e.out) && !(free(e.out)>0) ) { gw.next(e.out); }
     955          while (gw.valid(e.v) && !gw.valid(e.out)) {
     956            gw.next(e.v);
     957            if (gw.valid(e.v)) gw.first(e.out, e.v);
     958            while (gw.valid(e.out) && !(free(e.out)>0) ) { gw.next(e.out); }
    957959          }
    958           if (!graph->valid(e.out)) {
     960          if (!gw.valid(e.out)) {
    959961            e.out_or_in=0;
    960             graph->first(e.v);
    961             if (graph->valid(e.v)) graph->first(e.in, e.v); else e.in=OldInEdgeIt(INVALID);
    962             while (graph->valid(e.in) && !(free(e.in)>0) ) { graph->next(e.in); }
    963             while (graph->valid(e.v) && !graph->valid(e.in)) {
    964               graph->next(e.v);
    965               if (graph->valid(e.v)) graph->first(e.in, e.v);
    966               while (graph->valid(e.in) && !(free(e.in)>0) ) { graph->next(e.in); }
     962            gw.first(e.v);
     963            if (gw.valid(e.v)) gw.first(e.in, e.v); else e.in=/*OldInEdgeIt*/(INVALID);
     964            while (gw.valid(e.in) && !(free(e.in)>0) ) { gw.next(e.in); }
     965            while (gw.valid(e.v) && !gw.valid(e.in)) {
     966              gw.next(e.v);
     967              if (gw.valid(e.v)) gw.first(e.in, e.v);
     968              while (gw.valid(e.in) && !(free(e.in)>0) ) { gw.next(e.in); }
    967969            } 
    968970          }
    969971        } else {
    970           graph->next(e.in);
    971           while (graph->valid(e.in) && !(free(e.in)>0) ) { graph->next(e.in); }
    972           while (graph->valid(e.v) && !graph->valid(e.in)) {
    973             graph->next(e.v);
    974             if (graph->valid(e.v)) graph->first(e.in, e.v);
    975             while (graph->valid(e.in) && !(free(e.in)>0) ) { graph->next(e.in); }
     972          gw.next(e.in);
     973          while (gw.valid(e.in) && !(free(e.in)>0) ) { gw.next(e.in); }
     974          while (gw.valid(e.v) && !gw.valid(e.in)) {
     975            gw.next(e.v);
     976            if (gw.valid(e.v)) gw.first(e.in, e.v);
     977            while (gw.valid(e.in) && !(free(e.in)>0) ) { gw.next(e.in); }
    976978          }
    977979        }
     
    995997
    996998    Node tail(Edge e) const {
    997       return ((e.out_or_in) ? graph->aNode(e.out) : graph->aNode(e.in)); }
     999      return ((e.out_or_in) ? gw.aNode(e.out) : gw.aNode(e.in)); }
    9981000    Node head(Edge e) const {
    999       return ((e.out_or_in) ? graph->bNode(e.out) : graph->bNode(e.in)); }
     1001      return ((e.out_or_in) ? gw.bNode(e.out) : gw.bNode(e.in)); }
    10001002
    10011003    Node aNode(OutEdgeIt e) const {
    1002       return ((e.out_or_in) ? graph->aNode(e.out) : graph->aNode(e.in)); }
     1004      return ((e.out_or_in) ? gw.aNode(e.out) : gw.aNode(e.in)); }
    10031005    Node bNode(OutEdgeIt e) const {
    1004       return ((e.out_or_in) ? graph->bNode(e.out) : graph->bNode(e.in)); }
    1005 
    1006     int id(Node v) const { return graph->id(v); }
    1007 
    1008     bool valid(Node n) const { return graph->valid(n); }
     1006      return ((e.out_or_in) ? gw.bNode(e.out) : gw.bNode(e.in)); }
     1007
     1008    int id(Node v) const { return gw.id(v); }
     1009
     1010    bool valid(Node n) const { return gw.valid(n); }
    10091011    bool valid(Edge e) const {
    1010       return e.out_or_in ? graph->valid(e.out) : graph->valid(e.in); }
     1012      return e.out_or_in ? gw.valid(e.out) : gw.valid(e.in); }
    10111013
    10121014    void augment(const Edge& e, Number a) const {
     
    10321034    }
    10331035
    1034     template<typename T> class NodeMap : public Graph::NodeMap<T> {
     1036    template<typename T> class NodeMap : public GraphWrapper::NodeMap<T> {
    10351037    public:
    10361038      NodeMap(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& _G)
    1037         : Graph::NodeMap<T>(_G.getGraph()) { }
     1039        : GraphWrapper::NodeMap<T>(_G.gw) { }
    10381040      NodeMap(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& _G,
    1039               T a) : Graph::NodeMap<T>(_G.getGraph(), a) { }
     1041              T a) : GraphWrapper::NodeMap<T>(_G.gw, a) { }
    10401042    };
    10411043
     
    10521054    template <typename T>
    10531055    class EdgeMap {
    1054       typename Graph::EdgeMap<T> forward_map, backward_map;
    1055     public:
    1056       EdgeMap(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& _G) : forward_map(_G.getGraph()), backward_map(_G.getGraph()) { }
    1057       EdgeMap(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& _G, T a) : forward_map(_G.getGraph(), a), backward_map(_G.getGraph(), a) { }
     1056      typename GraphWrapper::EdgeMap<T> forward_map, backward_map;
     1057    public:
     1058      EdgeMap(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& _G) : forward_map(_G.gw), backward_map(_G.gw) { }
     1059      EdgeMap(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& _G, T a) : forward_map(_G.gw, a), backward_map(_G.gw, a) { }
    10581060      void set(Edge e, T a) {
    10591061        if (e.out_or_in)
     
    11281130   
    11291131    //template<typename I> I getNext(const I& i) const {
    1130     //  return graph->getNext(i); }
    1131     //template<typename I> I& next(I &i) const { return graph->next(i); }   
     1132    //  return gw.getNext(i); }
     1133    //template<typename I> I& next(I &i) const { return gw.next(i); }   
    11321134
    11331135    template< typename It > It first() const {
     
    11371139      It e; first(e, v); return e; }
    11381140
    1139     //Node head(const Edge& e) const { return graph->head(e); }
    1140     //Node tail(const Edge& e) const { return graph->tail(e); }
     1141    //Node head(const Edge& e) const { return gw.head(e); }
     1142    //Node tail(const Edge& e) const { return gw.tail(e); }
    11411143
    11421144    //template<typename I> bool valid(const I& i) const
    1143     //  { return graph->valid(i); }
    1144  
    1145     //int nodeNum() const { return graph->nodeNum(); }
    1146     //int edgeNum() const { return graph->edgeNum(); }
     1145    //  { return gw.valid(i); }
     1146 
     1147    //int nodeNum() const { return gw.nodeNum(); }
     1148    //int edgeNum() const { return gw.edgeNum(); }
    11471149 
    11481150    //template<typename I> Node aNode(const I& e) const {
    1149     //  return graph->aNode(e); }
     1151    //  return gw.aNode(e); }
    11501152    //template<typename I> Node bNode(const I& e) const {
    1151     //  return graph->bNode(e); }
    1152  
    1153     //Node addNode() const { return graph->addNode(); }
     1153    //  return gw.bNode(e); }
     1154 
     1155    //Node addNode() const { return gw.addNode(); }
    11541156    //Edge addEdge(const Node& tail, const Node& head) const {
    1155     //  return graph->addEdge(tail, head); }
     1157    //  return gw.addEdge(tail, head); }
    11561158 
    11571159    //void erase(const OutEdgeIt& e) {
     
    11631165      first_out_edges.set(this->tail(e), f);
    11641166    }
    1165     //template<typename I> void erase(const I& i) const { graph->erase(i); }
    1166  
    1167     //void clear() const { graph->clear(); }
     1167    //template<typename I> void erase(const I& i) const { gw.erase(i); }
     1168 
     1169    //void clear() const { gw.clear(); }
    11681170   
    11691171    template<typename T> class NodeMap : public ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::NodeMap<T> {
     
    12101212    FilterGraphWrapper(const Graph& _G, FlowMap& _flow,
    12111213                           const CapacityMap& _capacity) :
    1212       ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>(_G, _flow, _capacity), dist(*this, graph->nodeNum()) {
     1214      ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>(_G, _flow, _capacity), dist(*this, gw.nodeNum()) {
    12131215    }
    12141216
     
    12491251    //Graph& getGraph() const { return (*graph); }
    12501252   
    1251     //template<typename I> I& first(I& i) const { return graph->first(i); }
     1253    //template<typename I> I& first(I& i) const { return gw.first(i); }
    12521254    //template<typename I, typename P> I& first(I& i, const P& p) const {
    1253     //  return graph->first(i, p); }
     1255    //  return gw.first(i, p); }
    12541256   
    12551257    //template<typename I> I getNext(const I& i) const {
    1256     //  return graph->getNext(i); }
    1257     //template<typename I> I& next(I &i) const { return graph->next(i); }   
     1258    //  return gw.getNext(i); }
     1259    //template<typename I> I& next(I &i) const { return gw.next(i); }   
    12581260
    12591261    template< typename It > It first() const {
     
    12631265      It e; first(e, v); return e; }
    12641266
    1265     //Node head(const Edge& e) const { return graph->head(e); }
    1266     //Node tail(const Edge& e) const { return graph->tail(e); }
     1267    //Node head(const Edge& e) const { return gw.head(e); }
     1268    //Node tail(const Edge& e) const { return gw.tail(e); }
    12671269
    12681270    //template<typename I> bool valid(const I& i) const
    1269     //  { return graph->valid(i); }
     1271    //  { return gw.valid(i); }
    12701272 
    12711273    //template<typename I> void setInvalid(const I &i);
    1272     //{ return graph->setInvalid(i); }
    1273 
    1274     //int nodeNum() const { return graph->nodeNum(); }
    1275     //int edgeNum() const { return graph->edgeNum(); }
     1274    //{ return gw.setInvalid(i); }
     1275
     1276    //int nodeNum() const { return gw.nodeNum(); }
     1277    //int edgeNum() const { return gw.edgeNum(); }
    12761278 
    12771279    //template<typename I> Node aNode(const I& e) const {
    1278     //  return graph->aNode(e); }
     1280    //  return gw.aNode(e); }
    12791281    //template<typename I> Node bNode(const I& e) const {
    1280     //  return graph->bNode(e); }
    1281  
    1282     //Node addNode() const { return graph->addNode(); }
     1282    //  return gw.bNode(e); }
     1283 
     1284    //Node addNode() const { return gw.addNode(); }
    12831285    //Edge addEdge(const Node& tail, const Node& head) const {
    1284     //  return graph->addEdge(tail, head); }
    1285  
    1286     //template<typename I> void erase(const I& i) const { graph->erase(i); }
    1287  
    1288     //void clear() const { graph->clear(); }
     1286    //  return gw.addEdge(tail, head); }
     1287 
     1288    //template<typename I> void erase(const I& i) const { gw.erase(i); }
     1289 
     1290    //void clear() const { gw.clear(); }
    12891291   
    12901292    template<typename T> class NodeMap : public ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::NodeMap<T> {
     
    13421344//     typedef typename Graph::EdgeIt EdgeIt;
    13431345
    1344 //     int nodeNum() const { return graph->nodeNum(); }
    1345 //     int edgeNum() const { return graph->edgeNum(); }
    1346 
    1347 //     Node& first(Node& n) const { return graph->first(n); }
     1346//     int nodeNum() const { return gw.nodeNum(); }
     1347//     int edgeNum() const { return gw.edgeNum(); }
     1348
     1349//     Node& first(Node& n) const { return gw.first(n); }
    13481350
    13491351//     // Edge and SymEdge  is missing!!!!
     
    13541356//       {
    13551357//      e.n=n;
    1356 //      graph->first(e.o,n);
    1357 //      while(graph->valid(e.o) && fmap.get(e.o)>=himap.get(e.o))
    1358 //        graph->goNext(e.o);
    1359 //      if(!graph->valid(e.o)) {
    1360 //        graph->first(e.i,n);
    1361 //        while(graph->valid(e.i) && fmap.get(e.i)<=lomap.get(e.i))
    1362 //          graph->goNext(e.i);
     1358//      gw.first(e.o,n);
     1359//      while(gw.valid(e.o) && fmap.get(e.o)>=himap.get(e.o))
     1360//        gw.goNext(e.o);
     1361//      if(!gw.valid(e.o)) {
     1362//        gw.first(e.i,n);
     1363//        while(gw.valid(e.i) && fmap.get(e.i)<=lomap.get(e.i))
     1364//          gw.goNext(e.i);
    13631365//      }
    13641366//      return e;
     
    13671369//   OutEdgeIt &goNext(OutEdgeIt &e)
    13681370//   {
    1369 //   if(graph->valid(e.o)) {
    1370 //   while(graph->valid(e.o) && fmap.get(e.o)>=himap.get(e.o))
    1371 //   graph->goNext(e.o);
    1372 //   if(graph->valid(e.o)) return e;
    1373 //   else graph->first(e.i,e.n);
     1371//   if(gw.valid(e.o)) {
     1372//   while(gw.valid(e.o) && fmap.get(e.o)>=himap.get(e.o))
     1373//   gw.goNext(e.o);
     1374//   if(gw.valid(e.o)) return e;
     1375//   else gw.first(e.i,e.n);
    13741376//   }
    13751377//   else {
    1376 //   while(graph->valid(e.i) && fmap.get(e.i)<=lomap.get(e.i))
    1377 //   graph->goNext(e.i);
     1378//   while(gw.valid(e.i) && fmap.get(e.i)<=lomap.get(e.i))
     1379//   gw.goNext(e.i);
    13781380//   return e;
    13791381//   }
     
    13811383//   OutEdgeIt Next(const OutEdgeIt &e) {OutEdgeIt t(e); return goNext(t);}
    13821384// */
    1383 //     //bool valid(const OutEdgeIt e) { return graph->valid(e.o)||graph->valid(e.i);}
     1385//     //bool valid(const OutEdgeIt e) { return gw.valid(e.o)||gw.valid(e.i);}
    13841386
    13851387//     //FIXME
     
    13871389//       {
    13881390//      e.n=n;
    1389 //      graph->first(e.i,n);
    1390 //      while(graph->valid(e.i) && fmap.get(e.i)>=himap.get(e.i))
    1391 //        graph->goNext(e.i);
    1392 //      if(!graph->valid(e.i)) {
    1393 //        graph->first(e.o,n);
    1394 //        while(graph->valid(e.o) && fmap.get(e.o)<=lomap.get(e.o))
    1395 //          graph->goNext(e.o);
     1391//      gw.first(e.i,n);
     1392//      while(gw.valid(e.i) && fmap.get(e.i)>=himap.get(e.i))
     1393//        gw.goNext(e.i);
     1394//      if(!gw.valid(e.i)) {
     1395//        gw.first(e.o,n);
     1396//        while(gw.valid(e.o) && fmap.get(e.o)<=lomap.get(e.o))
     1397//          gw.goNext(e.o);
    13961398//      }
    13971399//      return e;
     
    14001402//   InEdgeIt &goNext(InEdgeIt &e)
    14011403//   {
    1402 //   if(graph->valid(e.i)) {
    1403 //   while(graph->valid(e.i) && fmap.get(e.i)>=himap.get(e.i))
    1404 //   graph->goNext(e.i);
    1405 //   if(graph->valid(e.i)) return e;
    1406 //   else graph->first(e.o,e.n);
     1404//   if(gw.valid(e.i)) {
     1405//   while(gw.valid(e.i) && fmap.get(e.i)>=himap.get(e.i))
     1406//   gw.goNext(e.i);
     1407//   if(gw.valid(e.i)) return e;
     1408//   else gw.first(e.o,e.n);
    14071409//   }
    14081410//   else {
    1409 //   while(graph->valid(e.o) && fmap.get(e.o)<=lomap.get(e.o))
    1410 //   graph->goNext(e.o);
     1411//   while(gw.valid(e.o) && fmap.get(e.o)<=lomap.get(e.o))
     1412//   gw.goNext(e.o);
    14111413//   return e;
    14121414//   }
     
    14141416//   InEdgeIt Next(const InEdgeIt &e) {InEdgeIt t(e); return goNext(t);}
    14151417// */
    1416 //     //bool valid(const InEdgeIt e) { return graph->valid(e.i)||graph->valid(e.o);}
    1417 
    1418 //     //template<typename I> I &goNext(I &i); { return graph->goNext(i); }
    1419 //     //template<typename I> I next(const I i); { return graph->goNext(i); }
     1418//     //bool valid(const InEdgeIt e) { return gw.valid(e.i)||gw.valid(e.o);}
     1419
     1420//     //template<typename I> I &goNext(I &i); { return gw.goNext(i); }
     1421//     //template<typename I> I next(const I i); { return gw.goNext(i); }
    14201422
    14211423//     template< typename It > It first() const {
     
    14251427//       It e; first(e, v); return e; }
    14261428
    1427 //     Node head(const Edge& e) const { return graph->head(e); }
    1428 //     Node tail(const Edge& e) const { return graph->tail(e); }
     1429//     Node head(const Edge& e) const { return gw.head(e); }
     1430//     Node tail(const Edge& e) const { return gw.tail(e); }
    14291431 
    14301432//     template<typename I> Node aNode(const I& e) const {
    1431 //       return graph->aNode(e); }
     1433//       return gw.aNode(e); }
    14321434//     template<typename I> Node bNode(const I& e) const {
    1433 //       return graph->bNode(e); }
     1435//       return gw.bNode(e); }
    14341436 
    14351437//     //template<typename I> bool valid(const I i);
    1436 //     //{ return graph->valid(i); }
     1438//     //{ return gw.valid(i); }
    14371439 
    14381440//     //template<typename I> void setInvalid(const I &i);
    1439 //     //{ return graph->setInvalid(i); }
    1440  
    1441 //     Node addNode() { return graph->addNode(); }
     1441//     //{ return gw.setInvalid(i); }
     1442 
     1443//     Node addNode() { return gw.addNode(); }
    14421444//     Edge addEdge(const Node& tail, const Node& head) {
    1443 //       return graph->addEdge(tail, head); }
    1444  
    1445 //     template<typename I> void erase(const I& i) { graph->erase(i); }
    1446  
    1447 //     void clear() { graph->clear(); }
     1445//       return gw.addEdge(tail, head); }
     1446 
     1447//     template<typename I> void erase(const I& i) { gw.erase(i); }
     1448 
     1449//     void clear() { gw.clear(); }
    14481450 
    14491451//     template<typename S> class NodeMap : public Graph::NodeMap<S> { };
     
    14591461} //namespace hugo
    14601462
    1461 #endif //GRAPH_WRAPPER_H
    1462 
     1463#endif //HUGO_GRAPH_WRAPPER_H
     1464
  • src/work/marci/makefile

    r196 r259  
    66#LEDAROOT ?= /ledasrc/LEDA-4.1
    77BOOSTROOT ?= /home/marci/boost
    8 INCLUDEDIRS ?= -I../../include -I.. -I. -I../{marci,jacint,alpar,klao,akos,athos} -I$(LEDAROOT)/incl -I$(BOOSTROOT)
     8INCLUDEDIRS ?= -I../../include -I.. -I../{marci,jacint,alpar,klao,akos,athos} -I$(BOOSTROOT)
     9LEDAINCLUDE ?= -I$(LEDAROOT)/incl
    910CXXFLAGS = -g -O -W -Wall $(INCLUDEDIRS) -ansi -pedantic
    1011
    11 LEDABINARIES = lg_vs_sg leda_graph_demo leda_bfs_dfs
    12 BINARIES = edmonds_karp_demo max_bipartite_matching_demo
     12LEDABINARIES = lg_vs_sg leda_graph_demo leda_bfs_dfs max_bipartite_matching_demo
     13BINARIES = edmonds_karp_demo
    1314#preflow_demo_boost edmonds_karp_demo_boost preflow_demo_jacint preflow_demo_athos edmonds_karp_demo_alpar preflow_demo_leda
    1415
     
    1718.depend dep depend:
    1819        -g++ $(INCLUDEDIRS) -M $(BINARIES:=.cc) > .depend #2>/dev/null
     20#       -g++ $(INCLUDEDIRS) $(LEDAINCLUDE) -M $(LEDABINARIES:=.cc) >> .depend #2>/dev/null
    1921
    2022
     
    4244
    4345edmonds_karp_demo:
    44         $(CXX3) $(CXXFLAGS) -g -I. -I.. -o edmonds_karp_demo edmonds_karp_demo.cc
    45         $(CXX3) $(CXXFLAGS) -g -pg -I. -I.. -o edmonds_karp_demo_prof edmonds_karp_demo.cc
     46        $(CXX3) $(CXXFLAGS) -o edmonds_karp_demo edmonds_karp_demo.cc
     47#       $(CXX3) $(CXXFLAGS) -pg -o edmonds_karp_demo_prof edmonds_karp_demo.cc
    4648
    4749lg_vs_sg:
  • src/work/marci/time_measure.h

    r128 r259  
    11// -*- c++ -*-
    2 #ifndef TIME_MEASURE_H
    3 #define TIME_MEASURE_H
     2#ifndef HUGO_TIME_MEASURE_H
     3#define HUGO_TIME_MEASURE_H
    44
    55#include <sys/time.h>
     
    128128}
    129129
    130 #endif //TIME_MEASURE_H
     130#endif //HUGO_TIME_MEASURE_H
Note: See TracChangeset for help on using the changeset viewer.