Changes in lemon/matching.h [945:5b926cc36a4b:698:3adf5e2d1e62] in lemon
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/matching.h
r945 r698 806 806 _matching = new MatchingMap(_graph); 807 807 } 808 809 808 if (!_node_potential) { 810 809 _node_potential = new NodePotential(_graph); 811 810 } 812 813 811 if (!_blossom_set) { 814 812 _blossom_index = new IntNodeMap(_graph); 815 813 _blossom_set = new BlossomSet(*_blossom_index); 816 814 _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);820 815 } 821 816 … … 824 819 _node_heap_index = new IntArcMap(_graph); 825 820 _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)); 831 822 } 832 823 … … 834 825 _tree_set_index = new IntIntMap(_blossom_num); 835 826 _tree_set = new TreeSet(*_tree_set_index); 836 } else { 837 _tree_set_index->resize(_blossom_num); 838 } 839 827 } 840 828 if (!_delta1) { 841 829 _delta1_index = new IntNodeMap(_graph); 842 830 _delta1 = new BinHeap<Value, IntNodeMap>(*_delta1_index); 843 831 } 844 845 832 if (!_delta2) { 846 833 _delta2_index = new IntIntMap(_blossom_num); 847 834 _delta2 = new BinHeap<Value, IntIntMap>(*_delta2_index); 848 } else { 849 _delta2_index->resize(_blossom_num); 850 } 851 835 } 852 836 if (!_delta3) { 853 837 _delta3_index = new IntEdgeMap(_graph); 854 838 _delta3 = new BinHeap<Value, IntEdgeMap>(*_delta3_index); 855 839 } 856 857 840 if (!_delta4) { 858 841 _delta4_index = new IntIntMap(_blossom_num); 859 842 _delta4 = new BinHeap<Value, IntIntMap>(*_delta4_index); 860 } else {861 _delta4_index->resize(_blossom_num);862 843 } 863 844 } … … 1705 1686 createStructures(); 1706 1687 1707 _blossom_node_list.clear();1708 _blossom_potential.clear();1709 1710 1688 for (ArcIt e(_graph); e != INVALID; ++e) { 1711 1689 (*_node_heap_index)[e] = BinHeap<Value, IntArcMap>::PRE_HEAP; … … 1721 1699 (*_delta4_index)[i] = _delta4->PRE_HEAP; 1722 1700 } 1723 1724 _delta1->clear();1725 _delta2->clear();1726 _delta3->clear();1727 _delta4->clear();1728 _blossom_set->clear();1729 _tree_set->clear();1730 1701 1731 1702 int index = 0; … … 1739 1710 } 1740 1711 (*_node_index)[n] = index; 1741 (*_node_data)[index].heap_index.clear();1742 (*_node_data)[index].heap.clear();1743 1712 (*_node_data)[index].pot = max; 1744 1713 _delta1->push(n, max); … … 2230 2199 _matching = new MatchingMap(_graph); 2231 2200 } 2232 2233 2201 if (!_node_potential) { 2234 2202 _node_potential = new NodePotential(_graph); 2235 2203 } 2236 2237 2204 if (!_blossom_set) { 2238 2205 _blossom_index = new IntNodeMap(_graph); 2239 2206 _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;2243 2207 _blossom_data = new RangeMap<BlossomData>(_blossom_num); 2244 2208 } … … 2249 2213 _node_data = new RangeMap<NodeData>(_node_num, 2250 2214 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));2255 2215 } 2256 2216 … … 2258 2218 _tree_set_index = new IntIntMap(_blossom_num); 2259 2219 _tree_set = new TreeSet(*_tree_set_index); 2260 } else { 2261 _tree_set_index->resize(_blossom_num); 2262 } 2263 2220 } 2264 2221 if (!_delta2) { 2265 2222 _delta2_index = new IntIntMap(_blossom_num); 2266 2223 _delta2 = new BinHeap<Value, IntIntMap>(*_delta2_index); 2267 } else { 2268 _delta2_index->resize(_blossom_num); 2269 } 2270 2224 } 2271 2225 if (!_delta3) { 2272 2226 _delta3_index = new IntEdgeMap(_graph); 2273 2227 _delta3 = new BinHeap<Value, IntEdgeMap>(*_delta3_index); 2274 2228 } 2275 2276 2229 if (!_delta4) { 2277 2230 _delta4_index = new IntIntMap(_blossom_num); 2278 2231 _delta4 = new BinHeap<Value, IntIntMap>(*_delta4_index); 2279 } else {2280 _delta4_index->resize(_blossom_num);2281 2232 } 2282 2233 } … … 2976 2927 createStructures(); 2977 2928 2978 _blossom_node_list.clear();2979 _blossom_potential.clear();2980 2981 2929 for (ArcIt e(_graph); e != INVALID; ++e) { 2982 2930 (*_node_heap_index)[e] = BinHeap<Value, IntArcMap>::PRE_HEAP; … … 2989 2937 (*_delta4_index)[i] = _delta4->PRE_HEAP; 2990 2938 } 2991 2992 _delta2->clear();2993 _delta3->clear();2994 _delta4->clear();2995 _blossom_set->clear();2996 _tree_set->clear();2997 2939 2998 2940 int index = 0; … … 3006 2948 } 3007 2949 (*_node_index)[n] = index; 3008 (*_node_data)[index].heap_index.clear();3009 (*_node_data)[index].heap.clear();3010 2950 (*_node_data)[index].pot = max; 3011 2951 int blossom =
Note: See TracChangeset
for help on using the changeset viewer.