// -*- c++ -*- #include #include #include #include #include #include //#include #include //#include #include using namespace hugo; // Use a DIMACS max flow file as stdin. // read_dimacs_demo < dimacs_max_flow_file int main(int, char **) { typedef SageGraph MutableGraph; typedef SmartGraph Graph; // typedef ListGraph Graph; typedef Graph::Node Node; typedef Graph::EdgeIt EdgeIt; Graph g; Node s, t; Graph::EdgeMap cap(g); //readDimacsMaxFlow(std::cin, g, s, t, cap); readDimacs(std::cin, g, cap, s, t); Timer ts; Graph::EdgeMap flow(g); //0 flow MaxFlow, Graph::EdgeMap > max_flow_test(g, s, t, cap, flow); { std::cout << "preflow ..." << std::endl; FOR_EACH_LOC(Graph::EdgeIt, e, g) flow.set(e, 0); ts.reset(); max_flow_test.preflowPhase1(MaxFlow, Graph::EdgeMap >::ZERO_FLOW); std::cout << "elapsed time: " << ts << std::endl; std::cout << "flow value: "<< max_flow_test.flowValue() << std::endl; } { std::cout << "preflow ..." << std::endl; FOR_EACH_LOC(Graph::EdgeIt, e, g) flow.set(e, 0); ts.reset(); max_flow_test.preflowPhase1(MaxFlow, Graph::EdgeMap >::ZERO_FLOW); std::cout << "elapsed time: " << ts << std::endl; std::cout << "flow value: "<< max_flow_test.flowValue() << std::endl; } return 0; }