#include #include #include // #include #include #include #include using namespace ogdf; int main(int argc, char* argv[]) { string inputFile = argv[1]; Graph G; if (!GraphIO::read(G, inputFile, GraphIO::readGML)) { std::cerr << "Could not read input.gml" << std::endl; return 1; } NodeArray numbering(G); int num = computeSTNumbering(G, numbering, nullptr, nullptr, true); OGDF_ASSERT(num == G.numberOfNodes()); // print after input // graphPrinter(G); std::cout << "G Planarity: " << ogdf::isPlanar(G) << std::endl; std::cout << "Original number of nodes: " << G.numberOfNodes() << std::endl; std::cout << "Original number of edges: " << G.numberOfEdges() << std::endl; // separator for planarization // <--------------> // PQ implementation to make planar subgraph std::cout << "start planarization" << std::endl; List *delEdges = new List; // empty list ogdf::MaximalPlanarSubgraphSimple mps(*(new PlanarSubgraphFast)); mps.call(G, *delEdges); std::cout << "Edges removed:" << delEdges->size() << std::endl; // delete removed edges for (edge e: *delEdges) { // print removed edges // std::cout << e->adjSource() << std::endl; G.delEdge(e); } // write processed graph to new gml file // GraphIO::write(G, "output.gml", GraphIO::writeGML); std::cout << "G planarity: " << ogdf::isPlanar(G) << std::endl; std::cout << "Original number of nodes: " << G.numberOfNodes() << std::endl; std::cout << "Subgraph number of edges: " << G.numberOfEdges() << std::endl; return 0; }