COIN-OR::LEMON - Graph Library

Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • lemon/preflow.h

    r956 r985  
    577577      _phase = true;
    578578
    579       Node n = _level->highestActive();
    580       int level = _level->highestActiveLevel();
    581       while (n != INVALID) {
     579      while (true) {
    582580        int num = _node_num;
    583581
    584         while (num > 0 && n != INVALID) {
     582        Node n = INVALID;
     583        int level = -1;
     584
     585        while (num > 0) {
     586          n = _level->highestActive();
     587          if (n == INVALID) goto first_phase_done;
     588          level = _level->highestActiveLevel();
     589          --num;
     590         
    585591          Value excess = (*_excess)[n];
    586592          int new_level = _level->maxLevel();
     
    648654            _level->deactivate(n);
    649655          }
    650 
    651           n = _level->highestActive();
    652           level = _level->highestActiveLevel();
     656        }
     657
     658        num = _node_num * 20;
     659        while (num > 0) {
     660          while (level >= 0 && _level->activeFree(level)) {
     661            --level;
     662          }
     663          if (level == -1) {
     664            n = _level->highestActive();
     665            level = _level->highestActiveLevel();
     666            if (n == INVALID) goto first_phase_done;
     667          } else {
     668            n = _level->activeOn(level);
     669          }
    653670          --num;
    654         }
    655 
    656         num = _node_num * 20;
    657         while (num > 0 && n != INVALID) {
     671
    658672          Value excess = (*_excess)[n];
    659673          int new_level = _level->maxLevel();
     
    721735            _level->deactivate(n);
    722736          }
    723 
    724           while (level >= 0 && _level->activeFree(level)) {
    725             --level;
    726           }
    727           if (level == -1) {
    728             n = _level->highestActive();
    729             level = _level->highestActiveLevel();
    730           } else {
    731             n = _level->activeOn(level);
    732           }
    733           --num;
    734         }
    735       }
     737        }
     738      }
     739    first_phase_done:;
    736740    }
    737741
Note: See TracChangeset for help on using the changeset viewer.