COIN-OR::LEMON - Graph Library

Ignore:
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • lemon/preflow.h

    r1029 r985  
    544544          _flow->set(e, (*_capacity)[e]);
    545545          (*_excess)[u] += rem;
     546          if (u != _target && !_level->active(u)) {
     547            _level->activate(u);
     548          }
    546549        }
    547550      }
     
    553556          _flow->set(e, 0);
    554557          (*_excess)[v] += rem;
    555         }
    556       }
    557       for (NodeIt n(_graph); n != INVALID; ++n)
    558         if(n!=_source && n!=_target && _tolerance.positive((*_excess)[n]))
    559           _level->activate(n);
    560          
     558          if (v != _target && !_level->active(v)) {
     559            _level->activate(v);
     560          }
     561        }
     562      }
    561563      return true;
    562564    }
  • test/preflow_test.cc

    r1029 r956  
    157157}
    158158
    159 void initFlowTest()
    160 {
    161   DIGRAPH_TYPEDEFS(SmartDigraph);
    162  
    163   SmartDigraph g;
    164   SmartDigraph::ArcMap<int> cap(g),iflow(g);
    165   Node s=g.addNode(); Node t=g.addNode();
    166   Node n1=g.addNode(); Node n2=g.addNode();
    167   Arc a;
    168   a=g.addArc(s,n1); cap[a]=20; iflow[a]=20;
    169   a=g.addArc(n1,n2); cap[a]=10; iflow[a]=0;
    170   a=g.addArc(n2,t); cap[a]=20; iflow[a]=0;
    171 
    172   Preflow<SmartDigraph> pre(g,cap,s,t);
    173   pre.init(iflow);
    174   pre.startFirstPhase();
    175   check(pre.flowValue() == 10, "The incorrect max flow value.");
    176   check(pre.minCut(s), "Wrong min cut (Node s).");
    177   check(pre.minCut(n1), "Wrong min cut (Node n1).");
    178   check(!pre.minCut(n2), "Wrong min cut (Node n2).");
    179   check(!pre.minCut(t), "Wrong min cut (Node t).");
    180 }
    181 
    182 
    183159int main() {
    184160
     
    271247        "The max flow value or the three min cut values are incorrect.");
    272248
    273   initFlowTest();
    274  
    275249  return 0;
    276250}
Note: See TracChangeset for help on using the changeset viewer.