src/test/preflow_test.cc
changeset 887 ec6a528dafd2
parent 880 9d0bfd35b97c
child 906 17f31d280385
     1.1 --- a/src/test/preflow_test.cc	Mon Sep 20 08:05:59 2004 +0000
     1.2 +++ b/src/test/preflow_test.cc	Mon Sep 20 08:27:34 2004 +0000
     1.3 @@ -71,10 +71,10 @@
     1.4  
     1.5    std::string f_name;
     1.6    if( getenv("srcdir") ) {
     1.7 -    f_name = std::string(getenv("srcdir")) + "/preflow_graph.inp";
     1.8 +    f_name = std::string(getenv("srcdir")) + "/preflow_graph.dim";
     1.9    }
    1.10    else {
    1.11 -    f_name = "preflow_graph.inp";
    1.12 +    f_name = "preflow_graph.dim";
    1.13    }
    1.14    
    1.15    std::ifstream file(f_name.c_str());
    1.16 @@ -87,11 +87,12 @@
    1.17    readDimacs(file, G, cap, s, t);
    1.18  
    1.19    FlowMap flow(G,0);
    1.20 +
    1.21   
    1.22 +
    1.23    PType preflow_test(G, s, t, cap, flow);
    1.24    preflow_test.run(PType::ZERO_FLOW);
    1.25 - 
    1.26 -   
    1.27 +    
    1.28    CutMap mincut(G,false);
    1.29    preflow_test.minCut(mincut); 
    1.30    int min_cut_value=cut_value(G,mincut,cap);
    1.31 @@ -112,16 +113,10 @@
    1.32    int flow_value=preflow_test.flowValue();
    1.33  
    1.34  
    1.35 +
    1.36    for(EdgeIt e(G); e!=INVALID; ++e) cap[e]=2*cap[e]; 
    1.37    preflow_test.setCap(cap);  
    1.38  
    1.39 -  NodeIt tmp_node(G,t);
    1.40 -  ++tmp_node;
    1.41 -  t=tmp_node;
    1.42 -  
    1.43 -  preflow_test.setTarget(t); //the max flow value remains 2*flow_value
    1.44 -  //warning: ++t must be a valid node. In preflow_graph, it is.
    1.45 -
    1.46    preflow_test.phase1(PType::PRE_FLOW);
    1.47  
    1.48    CutMap mincut1(G,false);
    1.49 @@ -141,10 +136,8 @@
    1.50    CutMap minmincut2(G,false);
    1.51    preflow_test.minMinCut(minmincut2); 
    1.52    min_min_cut_value=cut_value(G,minmincut2,cap);
    1.53 -
    1.54   
    1.55    preflow_test.maxMinCut(maxmincut); 
    1.56 -  
    1.57    max_min_cut_value=cut_value(G,maxmincut,cap);
    1.58  
    1.59    check(preflow_test.flowValue() == min_cut_value &&
    1.60 @@ -153,15 +146,27 @@
    1.61  	min_cut_value == 2*flow_value,
    1.62  	"The max flow value or the three min cut values were not doubled");
    1.63  
    1.64 +
    1.65 +
    1.66    EdgeIt e(G);
    1.67 -  for( int i=1; i==1000; ++i ) {
    1.68 -    flow[e]=0;
    1.69 +  for( int i=1; i==10; ++i ) {
    1.70 +    flow.set(e,0);
    1.71      ++e;
    1.72    }
    1.73  
    1.74    preflow_test.setFlow(flow); 
    1.75 +
    1.76 +  NodeIt tmp1(G,s);
    1.77 +  ++tmp1;
    1.78 +  if ( tmp1 != INVALID ) s=tmp1;
    1.79 +
    1.80 +  NodeIt tmp2(G,t);
    1.81 +  ++tmp2;
    1.82 +  if ( tmp2 != INVALID ) t=tmp2;
    1.83 +
    1.84    preflow_test.setSource(s);
    1.85 -
    1.86 +  preflow_test.setTarget(t); 
    1.87 +  
    1.88    preflow_test.run();
    1.89  
    1.90    CutMap mincut3(G,false);