equal
deleted
inserted
replaced
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; |