alpar@9: #include alpar@9: #include alpar@9: #include alpar@9: #include alpar@9: #include alpar@9: #include alpar@9: alpar@9: const char test_name[] = "circulation"; alpar@9: alpar@9: using namespace lemon; alpar@9: alpar@9: int main(int argc, char **argv) alpar@9: { alpar@9: if(argc!=2) exit(1); alpar@9: alpar@9: typedef int Value; alpar@9: alpar@9: SmartDigraph g; alpar@9: alpar@9: SmartDigraph::ArcMap lo_cap(g); alpar@9: SmartDigraph::ArcMap up_cap(g); alpar@9: SmartDigraph::ArcMap cost(g); alpar@9: SmartDigraph::NodeMap sup(g); alpar@9: alpar@9: Timer ti; alpar@9: try { alpar@9: std::ifstream input; alpar@9: input.open(argv[1]); alpar@9: readDimacsMin(input, g, lo_cap, up_cap, cost, sup); alpar@9: } catch (FormatError& error) { alpar@9: std::cerr << error.what() << std::endl; alpar@9: return 1; alpar@9: } alpar@9: std::cerr << "Read the file: " << ti << '\n'; alpar@9: ti.restart(); alpar@9: alpar@9: Circulation,SmartDigraph::ArcMap, alpar@9: SmartDigraph::NodeMap > circ(g,lo_cap,up_cap,sup); alpar@9: std::cerr << "Setup Circulation class: " << ti << '\n'; alpar@9: ti.restart(); alpar@9: bool res = circ.run(); alpar@9: if(res) alpar@9: { alpar@9: std::cerr << "A feasible circulation is found: " << ti << "\n"; alpar@9: ti.restart(); alpar@9: bool res2 = circ.checkFlow(); alpar@9: std::cerr << "Checked in time " << ti << "\n"; alpar@9: if(res2) alpar@9: std::cerr << "Success!\nn"; alpar@9: else alpar@9: std::cerr << "Oops!!!!\n\n"; alpar@9: } alpar@9: else alpar@9: { alpar@9: std::cerr << "A dual solution is found: " << ti << "\n"; alpar@9: ti.restart(); alpar@9: bool res2 = circ.checkBarrier(); alpar@9: std::cerr << "Checked in time " << ti << "\n"; alpar@9: if(res2) alpar@9: std::cerr << "Success!\nn"; alpar@9: else alpar@9: std::cerr << "Dual-Oops!!!!\n\n"; alpar@9: alpar@9: } alpar@9: } alpar@9: