fast version
authorjacint
Tue, 17 Feb 2004 11:43:22 +0000
changeset 8893bb934b0794
parent 87 46705346edd4
child 89 57fddb2bc15f
fast version
src/work/jacint/preflow_push_hl.h
     1.1 --- a/src/work/jacint/preflow_push_hl.h	Tue Feb 17 11:24:21 2004 +0000
     1.2 +++ b/src/work/jacint/preflow_push_hl.h	Tue Feb 17 11:43:22 2004 +0000
     1.3 @@ -25,7 +25,8 @@
     1.4  #ifndef PREFLOW_PUSH_HL_H
     1.5  #define PREFLOW_PUSH_HL_H
     1.6  
     1.7 -//#include <algorithm>
     1.8 +#define A 1
     1.9 +
    1.10  #include <vector>
    1.11  #include <stack>
    1.12  
    1.13 @@ -64,6 +65,8 @@
    1.14      */
    1.15      void run() {
    1.16   
    1.17 +      std::cout<<"A is "<<A<<" ";
    1.18 +
    1.19        typename Graph::NodeMap<int> level(G);      
    1.20        typename Graph::NodeMap<T> excess(G); 
    1.21  
    1.22 @@ -220,7 +223,7 @@
    1.23  	    if ( oldlevel < n ) {
    1.24  	      --numb[oldlevel];
    1.25  
    1.26 -	      if ( !numb[oldlevel] ) {  //If the level of w gets empty. 
    1.27 +	      if ( !numb[oldlevel] && oldlevel < A*n ) {  //If the level of w gets empty. 
    1.28  		
    1.29  		for (EachNodeIt v=G.template first<EachNodeIt>(); v.valid() ; ++v) {
    1.30  		  if (level.get(v) > oldlevel && level.get(v) < n ) level.set(v,n);  
    1.31 @@ -268,7 +271,7 @@
    1.32        For the maximum flow x found by the algorithm, it returns the flow value on Edge e, i.e. x(e). 
    1.33      */
    1.34  
    1.35 -    T flowonEdge(EdgeIt e) {
    1.36 +    T flowonedge(EdgeIt e) {
    1.37        return flow.get(e);
    1.38      }
    1.39