COIN-OR::LEMON - Graph Library

Ignore:
Location:
lemon
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • lemon/matching.h

    r954 r949  
    811811        _matching = new MatchingMap(_graph);
    812812      }
    813 
    814813      if (!_node_potential) {
    815814        _node_potential = new NodePotential(_graph);
    816815      }
    817 
    818816      if (!_blossom_set) {
    819817        _blossom_index = new IntNodeMap(_graph);
    820818        _blossom_set = new BlossomSet(*_blossom_index);
    821819        _blossom_data = new RangeMap<BlossomData>(_blossom_num);
    822       } else if (_blossom_data->size() != _blossom_num) {
    823         delete _blossom_data;
    824         _blossom_data = new RangeMap<BlossomData>(_blossom_num);
    825820      }
    826821
     
    829824        _node_heap_index = new IntArcMap(_graph);
    830825        _node_data = new RangeMap<NodeData>(_node_num,
    831                                             NodeData(*_node_heap_index));
    832       } else {
    833         delete _node_data;
    834         _node_data = new RangeMap<NodeData>(_node_num,
    835                                             NodeData(*_node_heap_index));
     826                                              NodeData(*_node_heap_index));
    836827      }
    837828
     
    839830        _tree_set_index = new IntIntMap(_blossom_num);
    840831        _tree_set = new TreeSet(*_tree_set_index);
    841       } else {
    842         _tree_set_index->resize(_blossom_num);
    843       }
    844 
     832      }
    845833      if (!_delta1) {
    846834        _delta1_index = new IntNodeMap(_graph);
    847835        _delta1 = new BinHeap<Value, IntNodeMap>(*_delta1_index);
    848836      }
    849 
    850837      if (!_delta2) {
    851838        _delta2_index = new IntIntMap(_blossom_num);
    852839        _delta2 = new BinHeap<Value, IntIntMap>(*_delta2_index);
    853       } else {
    854         _delta2_index->resize(_blossom_num);
    855       }
    856 
     840      }
    857841      if (!_delta3) {
    858842        _delta3_index = new IntEdgeMap(_graph);
    859843        _delta3 = new BinHeap<Value, IntEdgeMap>(*_delta3_index);
    860844      }
    861 
    862845      if (!_delta4) {
    863846        _delta4_index = new IntIntMap(_blossom_num);
    864847        _delta4 = new BinHeap<Value, IntIntMap>(*_delta4_index);
    865       } else {
    866         _delta4_index->resize(_blossom_num);
    867848      }
    868849    }
     
    16081589      createStructures();
    16091590
    1610       _blossom_node_list.clear();
    1611       _blossom_potential.clear();
    1612 
    16131591      for (ArcIt e(_graph); e != INVALID; ++e) {
    16141592        (*_node_heap_index)[e] = BinHeap<Value, IntArcMap>::PRE_HEAP;
     
    16241602        (*_delta4_index)[i] = _delta4->PRE_HEAP;
    16251603      }
    1626      
     1604
    16271605      _unmatched = _node_num;
    1628 
    1629       _delta1->clear();
    1630       _delta2->clear();
    1631       _delta3->clear();
    1632       _delta4->clear();
    1633       _blossom_set->clear();
    1634       _tree_set->clear();
    16351606
    16361607      int index = 0;
     
    16441615        }
    16451616        (*_node_index)[n] = index;
    1646         (*_node_data)[index].heap_index.clear();
    1647         (*_node_data)[index].heap.clear();
    16481617        (*_node_data)[index].pot = max;
    16491618        _delta1->push(n, max);
     
    22692238        _matching = new MatchingMap(_graph);
    22702239      }
    2271 
    22722240      if (!_node_potential) {
    22732241        _node_potential = new NodePotential(_graph);
    22742242      }
    2275 
    22762243      if (!_blossom_set) {
    22772244        _blossom_index = new IntNodeMap(_graph);
    22782245        _blossom_set = new BlossomSet(*_blossom_index);
    2279         _blossom_data = new RangeMap<BlossomData>(_blossom_num);
    2280       } else if (_blossom_data->size() != _blossom_num) {
    2281         delete _blossom_data;
    22822246        _blossom_data = new RangeMap<BlossomData>(_blossom_num);
    22832247      }
     
    22882252        _node_data = new RangeMap<NodeData>(_node_num,
    22892253                                            NodeData(*_node_heap_index));
    2290       } else if (_node_data->size() != _node_num) {
    2291         delete _node_data;
    2292         _node_data = new RangeMap<NodeData>(_node_num,
    2293                                             NodeData(*_node_heap_index));
    22942254      }
    22952255
     
    22972257        _tree_set_index = new IntIntMap(_blossom_num);
    22982258        _tree_set = new TreeSet(*_tree_set_index);
    2299       } else {
    2300         _tree_set_index->resize(_blossom_num);
    2301       }
    2302 
     2259      }
    23032260      if (!_delta2) {
    23042261        _delta2_index = new IntIntMap(_blossom_num);
    23052262        _delta2 = new BinHeap<Value, IntIntMap>(*_delta2_index);
    2306       } else {
    2307         _delta2_index->resize(_blossom_num);
    2308       }
    2309 
     2263      }
    23102264      if (!_delta3) {
    23112265        _delta3_index = new IntEdgeMap(_graph);
    23122266        _delta3 = new BinHeap<Value, IntEdgeMap>(*_delta3_index);
    23132267      }
    2314 
    23152268      if (!_delta4) {
    23162269        _delta4_index = new IntIntMap(_blossom_num);
    23172270        _delta4 = new BinHeap<Value, IntIntMap>(*_delta4_index);
    2318       } else {
    2319         _delta4_index->resize(_blossom_num);
    23202271      }
    23212272    }
     
    30182969      createStructures();
    30192970
    3020       _blossom_node_list.clear();
    3021       _blossom_potential.clear();
    3022 
    30232971      for (ArcIt e(_graph); e != INVALID; ++e) {
    30242972        (*_node_heap_index)[e] = BinHeap<Value, IntArcMap>::PRE_HEAP;
     
    30332981
    30342982      _unmatched = _node_num;
    3035 
    3036       _delta2->clear();
    3037       _delta3->clear();
    3038       _delta4->clear();
    3039       _blossom_set->clear();
    3040       _tree_set->clear();
    30412983
    30422984      int index = 0;
     
    30502992        }
    30512993        (*_node_index)[n] = index;
    3052         (*_node_data)[index].heap_index.clear();
    3053         (*_node_data)[index].heap.clear();
    30542994        (*_node_data)[index].pot = max;
    30552995        int blossom =
  • lemon/unionfind.h

    r954 r864  
    12891289        first_free_class(-1), first_free_node(-1) {}
    12901290
    1291     /// \brief Clears the union-find data structure
    1292     ///
    1293     /// Erase each item from the data structure.
    1294     void clear() {
    1295       nodes.clear();
    1296       classes.clear();
    1297       first_free_node = first_free_class = first_class = -1;
    1298     }
    1299 
    13001291    /// \brief Insert a new node into a new component.
    13011292    ///
Note: See TracChangeset for help on using the changeset viewer.