src/work/athos/lp/max_flow_expression.cc
changeset 1241 dadc9987c537
parent 1240 88a2ab6bfc4a
equal deleted inserted replaced
0:27f8a6ac660c 1:4b46e6f46007
     5 #include <lemon/graph_utils.h>
     5 #include <lemon/graph_utils.h>
     6 #include <lemon/smart_graph.h>
     6 #include <lemon/smart_graph.h>
     7 #include <lemon/list_graph.h>
     7 #include <lemon/list_graph.h>
     8 #include <lemon/dimacs.h>
     8 #include <lemon/dimacs.h>
     9 #include <lemon/time_measure.h>
     9 #include <lemon/time_measure.h>
    10 #include <lp_solver_base.h>
    10 #include <lp_solver_glpk.h>
    11 
    11 
    12 using std::cout;
    12 using std::cout;
    13 using std::endl;
    13 using std::endl;
    14 using namespace lemon;
    14 using namespace lemon;
    15 
    15 
    16 template<typename Edge, typename EdgeIndexMap> 
    16 template<typename Edge, typename EdgeIndexMap> 
    17 class PrimalMap {
    17 class PrimalMap {
    18 protected:
    18 protected:
    19   LPGLPK* lp;
    19   LpGlpk* lp;
    20   EdgeIndexMap* edge_index_map;
    20   EdgeIndexMap* edge_index_map;
    21 public:
    21 public:
    22   PrimalMap(LPGLPK& _lp, EdgeIndexMap& _edge_index_map) : 
    22   PrimalMap(LpGlpk& _lp, EdgeIndexMap& _edge_index_map) : 
    23     lp(&_lp), edge_index_map(&_edge_index_map) { }
    23     lp(&_lp), edge_index_map(&_edge_index_map) { }
    24   double operator[](Edge e) const { 
    24   double operator[](Edge e) const { 
    25     return lp->getPrimal((*edge_index_map)[e]);
    25     return lp->getPrimal((*edge_index_map)[e]);
    26   }
    26   }
    27 };
    27 };
    41   Node s, t;
    41   Node s, t;
    42   Graph::EdgeMap<int> cap(g);
    42   Graph::EdgeMap<int> cap(g);
    43   readDimacs(std::cin, g, cap, s, t);
    43   readDimacs(std::cin, g, cap, s, t);
    44   Timer ts;
    44   Timer ts;
    45   
    45   
    46   typedef LPGLPK LPSolver;
    46   typedef LpGlpk LPSolver;
    47   LPSolver lp;
    47   LPSolver lp;
    48   lp.setMaximize();
    48   lp.setMaximize();
    49   typedef LPSolver::Col Col;
    49   typedef LPSolver::Col Col;
    50   typedef LPSolver::Row Row;
    50   typedef LPSolver::Row Row;
    51   typedef Graph::EdgeMap<Col> EdgeIndexMap;
    51   typedef Graph::EdgeMap<Col> EdgeIndexMap;