lemon/preflow.h
changeset 2521 05c0ba99cc27
parent 2514 57143c09dc20
child 2522 616c019215c4
equal deleted inserted replaced
23:bf8b77df6350 24:f4f520eda9fb
   709     /// \pre The \ref init() and startFirstPhase() functions should be
   709     /// \pre The \ref init() and startFirstPhase() functions should be
   710     /// called before.
   710     /// called before.
   711     void startSecondPhase() {
   711     void startSecondPhase() {
   712       _phase = false;
   712       _phase = false;
   713 
   713 
   714       typename Graph::template NodeMap<bool> reached(_graph, false);
   714       typename Graph::template NodeMap<bool> reached(_graph);
   715       for (NodeIt n(_graph); n != INVALID; ++n) {
   715       for (NodeIt n(_graph); n != INVALID; ++n) {
   716 	reached.set(n, (*_level)[n] < _level->maxLevel());
   716 	reached.set(n, (*_level)[n] < _level->maxLevel());
   717       }
   717       }
   718 
   718 
   719       _level->initStart();
   719       _level->initStart();
   749 	queue.swap(nqueue);
   749 	queue.swap(nqueue);
   750       }
   750       }
   751       _level->initFinish();
   751       _level->initFinish();
   752 
   752 
   753       for (NodeIt n(_graph); n != INVALID; ++n) {
   753       for (NodeIt n(_graph); n != INVALID; ++n) {
   754 	if ((*_excess)[n] > 0 && _target != n) {
   754 	if (!reached[n]) {
       
   755 	  _level->markToBottom(n);
       
   756 	} else if ((*_excess)[n] > 0 && _target != n) {
   755 	  _level->activate(n);
   757 	  _level->activate(n);
   756 	}
   758 	}
   757       }
   759       }
   758 
   760 
   759       Node n;
   761       Node n;