/* vim: set sw=4 sts=4 et foldmethod=syntax : */ #include #include #include #include #include #include #include #include using namespace clique; int main(int argc, char * argv[]) { try { if (argc != 3) { std::cout << "Usage: " << argv[0] << " [options] algorithm file" << std::endl; return EXIT_FAILURE; } MaxCliqueParams params; Graph graph = read_dimacs(std::string(argv[2])); gettimeofday(¶ms.start_time, 0); MaxCliqueResult result; if (argv[1] == std::string("mcsa1")) result = mcsa1_max_clique(graph, params); else if (argv[1] == std::string("bmcsa1")) result = bmcsa1_max_clique(graph, params); else { std::cout << "Unknown algorithm" << std::endl; return EXIT_FAILURE; } timeval end_time; gettimeofday(&end_time, 0); unsigned long overall_time = (1000 * (end_time.tv_sec - params.start_time.tv_sec)) + ((end_time.tv_usec - params.start_time.tv_usec) / 1000); std::cout << result.size << " " << result.nodes; std::cout << std::endl; for (std::set::const_iterator v(result.members.begin()), v_end(result.members.end()) ; v != v_end ; ++v) std::cout << *v + 1 << " "; std::cout << std::endl; std::cout << overall_time; std::cout << std::endl; if (params.work_donation) std::cout << result.donations << std::endl; return EXIT_SUCCESS; } catch (const std::exception & e) { std::cerr << "Error: " << e.what() << std::endl; return EXIT_FAILURE; } }