COIN-OR::LEMON - Graph Library

Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • lemon/matching.h

    r945 r698  
    806806        _matching = new MatchingMap(_graph);
    807807      }
    808 
    809808      if (!_node_potential) {
    810809        _node_potential = new NodePotential(_graph);
    811810      }
    812 
    813811      if (!_blossom_set) {
    814812        _blossom_index = new IntNodeMap(_graph);
    815813        _blossom_set = new BlossomSet(*_blossom_index);
    816814        _blossom_data = new RangeMap<BlossomData>(_blossom_num);
    817       } else if (_blossom_data->size() != _blossom_num) {
    818         delete _blossom_data;
    819         _blossom_data = new RangeMap<BlossomData>(_blossom_num);
    820815      }
    821816
     
    824819        _node_heap_index = new IntArcMap(_graph);
    825820        _node_data = new RangeMap<NodeData>(_node_num,
    826                                             NodeData(*_node_heap_index));
    827       } else {
    828         delete _node_data;
    829         _node_data = new RangeMap<NodeData>(_node_num,
    830                                             NodeData(*_node_heap_index));
     821                                              NodeData(*_node_heap_index));
    831822      }
    832823
     
    834825        _tree_set_index = new IntIntMap(_blossom_num);
    835826        _tree_set = new TreeSet(*_tree_set_index);
    836       } else {
    837         _tree_set_index->resize(_blossom_num);
    838       }
    839 
     827      }
    840828      if (!_delta1) {
    841829        _delta1_index = new IntNodeMap(_graph);
    842830        _delta1 = new BinHeap<Value, IntNodeMap>(*_delta1_index);
    843831      }
    844 
    845832      if (!_delta2) {
    846833        _delta2_index = new IntIntMap(_blossom_num);
    847834        _delta2 = new BinHeap<Value, IntIntMap>(*_delta2_index);
    848       } else {
    849         _delta2_index->resize(_blossom_num);
    850       }
    851 
     835      }
    852836      if (!_delta3) {
    853837        _delta3_index = new IntEdgeMap(_graph);
    854838        _delta3 = new BinHeap<Value, IntEdgeMap>(*_delta3_index);
    855839      }
    856 
    857840      if (!_delta4) {
    858841        _delta4_index = new IntIntMap(_blossom_num);
    859842        _delta4 = new BinHeap<Value, IntIntMap>(*_delta4_index);
    860       } else {
    861         _delta4_index->resize(_blossom_num);
    862843      }
    863844    }
     
    17051686      createStructures();
    17061687
    1707       _blossom_node_list.clear();
    1708       _blossom_potential.clear();
    1709 
    17101688      for (ArcIt e(_graph); e != INVALID; ++e) {
    17111689        (*_node_heap_index)[e] = BinHeap<Value, IntArcMap>::PRE_HEAP;
     
    17211699        (*_delta4_index)[i] = _delta4->PRE_HEAP;
    17221700      }
    1723      
    1724       _delta1->clear();
    1725       _delta2->clear();
    1726       _delta3->clear();
    1727       _delta4->clear();
    1728       _blossom_set->clear();
    1729       _tree_set->clear();
    17301701
    17311702      int index = 0;
     
    17391710        }
    17401711        (*_node_index)[n] = index;
    1741         (*_node_data)[index].heap_index.clear();
    1742         (*_node_data)[index].heap.clear();
    17431712        (*_node_data)[index].pot = max;
    17441713        _delta1->push(n, max);
     
    22302199        _matching = new MatchingMap(_graph);
    22312200      }
    2232 
    22332201      if (!_node_potential) {
    22342202        _node_potential = new NodePotential(_graph);
    22352203      }
    2236 
    22372204      if (!_blossom_set) {
    22382205        _blossom_index = new IntNodeMap(_graph);
    22392206        _blossom_set = new BlossomSet(*_blossom_index);
    2240         _blossom_data = new RangeMap<BlossomData>(_blossom_num);
    2241       } else if (_blossom_data->size() != _blossom_num) {
    2242         delete _blossom_data;
    22432207        _blossom_data = new RangeMap<BlossomData>(_blossom_num);
    22442208      }
     
    22492213        _node_data = new RangeMap<NodeData>(_node_num,
    22502214                                            NodeData(*_node_heap_index));
    2251       } else if (_node_data->size() != _node_num) {
    2252         delete _node_data;
    2253         _node_data = new RangeMap<NodeData>(_node_num,
    2254                                             NodeData(*_node_heap_index));
    22552215      }
    22562216
     
    22582218        _tree_set_index = new IntIntMap(_blossom_num);
    22592219        _tree_set = new TreeSet(*_tree_set_index);
    2260       } else {
    2261         _tree_set_index->resize(_blossom_num);
    2262       }
    2263 
     2220      }
    22642221      if (!_delta2) {
    22652222        _delta2_index = new IntIntMap(_blossom_num);
    22662223        _delta2 = new BinHeap<Value, IntIntMap>(*_delta2_index);
    2267       } else {
    2268         _delta2_index->resize(_blossom_num);
    2269       }
    2270 
     2224      }
    22712225      if (!_delta3) {
    22722226        _delta3_index = new IntEdgeMap(_graph);
    22732227        _delta3 = new BinHeap<Value, IntEdgeMap>(*_delta3_index);
    22742228      }
    2275 
    22762229      if (!_delta4) {
    22772230        _delta4_index = new IntIntMap(_blossom_num);
    22782231        _delta4 = new BinHeap<Value, IntIntMap>(*_delta4_index);
    2279       } else {
    2280         _delta4_index->resize(_blossom_num);
    22812232      }
    22822233    }
     
    29762927      createStructures();
    29772928
    2978       _blossom_node_list.clear();
    2979       _blossom_potential.clear();
    2980 
    29812929      for (ArcIt e(_graph); e != INVALID; ++e) {
    29822930        (*_node_heap_index)[e] = BinHeap<Value, IntArcMap>::PRE_HEAP;
     
    29892937        (*_delta4_index)[i] = _delta4->PRE_HEAP;
    29902938      }
    2991 
    2992       _delta2->clear();
    2993       _delta3->clear();
    2994       _delta4->clear();
    2995       _blossom_set->clear();
    2996       _tree_set->clear();
    29972939
    29982940      int index = 0;
     
    30062948        }
    30072949        (*_node_index)[n] = index;
    3008         (*_node_data)[index].heap_index.clear();
    3009         (*_node_data)[index].heap.clear();
    30102950        (*_node_data)[index].pot = max;
    30112951        int blossom =
Note: See TracChangeset for help on using the changeset viewer.