/* Maximum Planar Subgraph by cactus * */ #include #include #include #include #include #include #include using namespace ogdf; int main(int argc, char* argv[]) { string input_file = argv[1]; Graph G; if (!GraphIO::read(G, input_file, GraphIO::readGML)) { std::cerr << "Could not read input.gml" << std::endl; return 1; } // -------------------------------- // planarize // -------------------------------- List *delEdges = new List; // empty list auto start = std::chrono::high_resolution_clock::now(); // compute a cactus, then compute edge addition PlanarSubgraphCactus psc; ogdf::MaximalPlanarSubgraphSimple mps(psc); mps.call(G, *delEdges); auto end = std::chrono::high_resolution_clock::now(); auto microseconds = std::chrono::duration_cast(end - start).count(); double time = static_cast(microseconds) / 1'000'000.0; // -------------------------------- // print out result of planarization // -------------------------------- int removed_edges = delEdges->size(); string filename = std::filesystem::path(input_file).stem(); std::cout << filename << ", " << removed_edges << ", " << time << std::endl; return 0; }