Changes in / [954:07ec2b52e53d:953:d8ea85825e02] in lemon
- Location:
- lemon
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/matching.h
r954 r949 811 811 _matching = new MatchingMap(_graph); 812 812 } 813 814 813 if (!_node_potential) { 815 814 _node_potential = new NodePotential(_graph); 816 815 } 817 818 816 if (!_blossom_set) { 819 817 _blossom_index = new IntNodeMap(_graph); 820 818 _blossom_set = new BlossomSet(*_blossom_index); 821 819 _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);825 820 } 826 821 … … 829 824 _node_heap_index = new IntArcMap(_graph); 830 825 _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)); 836 827 } 837 828 … … 839 830 _tree_set_index = new IntIntMap(_blossom_num); 840 831 _tree_set = new TreeSet(*_tree_set_index); 841 } else { 842 _tree_set_index->resize(_blossom_num); 843 } 844 832 } 845 833 if (!_delta1) { 846 834 _delta1_index = new IntNodeMap(_graph); 847 835 _delta1 = new BinHeap<Value, IntNodeMap>(*_delta1_index); 848 836 } 849 850 837 if (!_delta2) { 851 838 _delta2_index = new IntIntMap(_blossom_num); 852 839 _delta2 = new BinHeap<Value, IntIntMap>(*_delta2_index); 853 } else { 854 _delta2_index->resize(_blossom_num); 855 } 856 840 } 857 841 if (!_delta3) { 858 842 _delta3_index = new IntEdgeMap(_graph); 859 843 _delta3 = new BinHeap<Value, IntEdgeMap>(*_delta3_index); 860 844 } 861 862 845 if (!_delta4) { 863 846 _delta4_index = new IntIntMap(_blossom_num); 864 847 _delta4 = new BinHeap<Value, IntIntMap>(*_delta4_index); 865 } else {866 _delta4_index->resize(_blossom_num);867 848 } 868 849 } … … 1608 1589 createStructures(); 1609 1590 1610 _blossom_node_list.clear();1611 _blossom_potential.clear();1612 1613 1591 for (ArcIt e(_graph); e != INVALID; ++e) { 1614 1592 (*_node_heap_index)[e] = BinHeap<Value, IntArcMap>::PRE_HEAP; … … 1624 1602 (*_delta4_index)[i] = _delta4->PRE_HEAP; 1625 1603 } 1626 1604 1627 1605 _unmatched = _node_num; 1628 1629 _delta1->clear();1630 _delta2->clear();1631 _delta3->clear();1632 _delta4->clear();1633 _blossom_set->clear();1634 _tree_set->clear();1635 1606 1636 1607 int index = 0; … … 1644 1615 } 1645 1616 (*_node_index)[n] = index; 1646 (*_node_data)[index].heap_index.clear();1647 (*_node_data)[index].heap.clear();1648 1617 (*_node_data)[index].pot = max; 1649 1618 _delta1->push(n, max); … … 2269 2238 _matching = new MatchingMap(_graph); 2270 2239 } 2271 2272 2240 if (!_node_potential) { 2273 2241 _node_potential = new NodePotential(_graph); 2274 2242 } 2275 2276 2243 if (!_blossom_set) { 2277 2244 _blossom_index = new IntNodeMap(_graph); 2278 2245 _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;2282 2246 _blossom_data = new RangeMap<BlossomData>(_blossom_num); 2283 2247 } … … 2288 2252 _node_data = new RangeMap<NodeData>(_node_num, 2289 2253 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));2294 2254 } 2295 2255 … … 2297 2257 _tree_set_index = new IntIntMap(_blossom_num); 2298 2258 _tree_set = new TreeSet(*_tree_set_index); 2299 } else { 2300 _tree_set_index->resize(_blossom_num); 2301 } 2302 2259 } 2303 2260 if (!_delta2) { 2304 2261 _delta2_index = new IntIntMap(_blossom_num); 2305 2262 _delta2 = new BinHeap<Value, IntIntMap>(*_delta2_index); 2306 } else { 2307 _delta2_index->resize(_blossom_num); 2308 } 2309 2263 } 2310 2264 if (!_delta3) { 2311 2265 _delta3_index = new IntEdgeMap(_graph); 2312 2266 _delta3 = new BinHeap<Value, IntEdgeMap>(*_delta3_index); 2313 2267 } 2314 2315 2268 if (!_delta4) { 2316 2269 _delta4_index = new IntIntMap(_blossom_num); 2317 2270 _delta4 = new BinHeap<Value, IntIntMap>(*_delta4_index); 2318 } else {2319 _delta4_index->resize(_blossom_num);2320 2271 } 2321 2272 } … … 3018 2969 createStructures(); 3019 2970 3020 _blossom_node_list.clear();3021 _blossom_potential.clear();3022 3023 2971 for (ArcIt e(_graph); e != INVALID; ++e) { 3024 2972 (*_node_heap_index)[e] = BinHeap<Value, IntArcMap>::PRE_HEAP; … … 3033 2981 3034 2982 _unmatched = _node_num; 3035 3036 _delta2->clear();3037 _delta3->clear();3038 _delta4->clear();3039 _blossom_set->clear();3040 _tree_set->clear();3041 2983 3042 2984 int index = 0; … … 3050 2992 } 3051 2993 (*_node_index)[n] = index; 3052 (*_node_data)[index].heap_index.clear();3053 (*_node_data)[index].heap.clear();3054 2994 (*_node_data)[index].pot = max; 3055 2995 int blossom = -
lemon/unionfind.h
r954 r864 1289 1289 first_free_class(-1), first_free_node(-1) {} 1290 1290 1291 /// \brief Clears the union-find data structure1292 ///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 1300 1291 /// \brief Insert a new node into a new component. 1301 1292 ///
Note: See TracChangeset
for help on using the changeset viewer.