COIN-OR::LEMON - Graph Library

Changeset 628:aa1804409f29 in lemon for lemon/gomory_hu.h


Ignore:
Timestamp:
04/14/09 10:35:38 (15 years ago)
Author:
Peter Kovacs <kpeter@…>
Branch:
default
Phase:
public
Message:

Exploit that the standard maps are reference maps (#190)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lemon/gomory_hu.h

    r593 r628  
    144144      _root = NodeIt(_graph);
    145145      for (NodeIt n(_graph); n != INVALID; ++n) {
    146         _pred->set(n, _root);
    147         _order->set(n, -1);
    148       }
    149       _pred->set(_root, INVALID);
    150       _weight->set(_root, std::numeric_limits<Value>::max());
     146        (*_pred)[n] = _root;
     147        (*_order)[n] = -1;
     148      }
     149      (*_pred)[_root] = INVALID;
     150      (*_weight)[_root] = std::numeric_limits<Value>::max();
    151151    }
    152152
     
    165165        fa.runMinCut();
    166166
    167         _weight->set(n, fa.flowValue());
     167        (*_weight)[n] = fa.flowValue();
    168168
    169169        for (NodeIt nn(_graph); nn != INVALID; ++nn) {
    170170          if (nn != n && fa.minCut(nn) && (*_pred)[nn] == pn) {
    171             _pred->set(nn, n);
     171            (*_pred)[nn] = n;
    172172          }
    173173        }
    174174        if ((*_pred)[pn] != INVALID && fa.minCut((*_pred)[pn])) {
    175           _pred->set(n, (*_pred)[pn]);
    176           _pred->set(pn, n);
    177           _weight->set(n, (*_weight)[pn]);
    178           _weight->set(pn, fa.flowValue());     
    179         }
    180       }
    181 
    182       _order->set(_root, 0);
     175          (*_pred)[n] = (*_pred)[pn];
     176          (*_pred)[pn] = n;
     177          (*_weight)[n] = (*_weight)[pn];
     178          (*_weight)[pn] = fa.flowValue();
     179        }
     180      }
     181
     182      (*_order)[_root] = 0;
    183183      int index = 1;
    184184
     
    191191        }
    192192        while (!st.empty()) {
    193           _order->set(st.back(), index++);
     193          (*_order)[st.back()] = index++;
    194194          st.pop_back();
    195195        }
     
    310310
    311311      typename Graph::template NodeMap<bool> reached(_graph, false);
    312       reached.set(_root, true);
     312      reached[_root] = true;
    313313      cutMap.set(_root, !s_root);
    314       reached.set(rn, true);
     314      reached[rn] = true;
    315315      cutMap.set(rn, s_root);
    316316
Note: See TracChangeset for help on using the changeset viewer.