lemon/cycle_canceling.h
changeset 839 f3bc4e9b5f3a
parent 820 7ef7a5fbb85d
child 840 2914b6f0fde0
equal deleted inserted replaced
3:545c55115fed 5:50fb5b0edbd4
   142   private:
   142   private:
   143 
   143 
   144     TEMPLATE_DIGRAPH_TYPEDEFS(GR);
   144     TEMPLATE_DIGRAPH_TYPEDEFS(GR);
   145     
   145     
   146     typedef std::vector<int> IntVector;
   146     typedef std::vector<int> IntVector;
   147     typedef std::vector<char> CharVector;
       
   148     typedef std::vector<double> DoubleVector;
   147     typedef std::vector<double> DoubleVector;
   149     typedef std::vector<Value> ValueVector;
   148     typedef std::vector<Value> ValueVector;
   150     typedef std::vector<Cost> CostVector;
   149     typedef std::vector<Cost> CostVector;
       
   150     typedef std::vector<char> BoolVector;
       
   151     // Note: vector<char> is used instead of vector<bool> for efficiency reasons
   151 
   152 
   152   private:
   153   private:
   153   
   154   
   154     template <typename KT, typename VT>
   155     template <typename KT, typename VT>
   155     class StaticVectorMap {
   156     class StaticVectorMap {
   196     // Data structures for storing the digraph
   197     // Data structures for storing the digraph
   197     IntNodeMap _node_id;
   198     IntNodeMap _node_id;
   198     IntArcMap _arc_idf;
   199     IntArcMap _arc_idf;
   199     IntArcMap _arc_idb;
   200     IntArcMap _arc_idb;
   200     IntVector _first_out;
   201     IntVector _first_out;
   201     CharVector _forward;
   202     BoolVector _forward;
   202     IntVector _source;
   203     IntVector _source;
   203     IntVector _target;
   204     IntVector _target;
   204     IntVector _reverse;
   205     IntVector _reverse;
   205 
   206 
   206     // Node and arc data
   207     // Node and arc data
   931       const int MIN_LIMIT = 5;
   932       const int MIN_LIMIT = 5;
   932 
   933 
   933       // Contruct auxiliary data vectors
   934       // Contruct auxiliary data vectors
   934       DoubleVector pi(_res_node_num, 0.0);
   935       DoubleVector pi(_res_node_num, 0.0);
   935       IntVector level(_res_node_num);
   936       IntVector level(_res_node_num);
   936       CharVector reached(_res_node_num);
   937       BoolVector reached(_res_node_num);
   937       CharVector processed(_res_node_num);
   938       BoolVector processed(_res_node_num);
   938       IntVector pred_node(_res_node_num);
   939       IntVector pred_node(_res_node_num);
   939       IntVector pred_arc(_res_node_num);
   940       IntVector pred_arc(_res_node_num);
   940       std::vector<int> stack(_res_node_num);
   941       std::vector<int> stack(_res_node_num);
   941       std::vector<int> proc_vector(_res_node_num);
   942       std::vector<int> proc_vector(_res_node_num);
   942 
   943