fix main: run on correct graphs
This commit is contained in:
parent
1b9f930adf
commit
354d96774d
2 changed files with 3 additions and 18 deletions
|
@ -1,4 +1,5 @@
|
||||||
#include "edmonds.h"
|
#include "edmonds.h"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
using namespace ED;
|
using namespace ED;
|
||||||
|
|
||||||
|
|
|
@ -16,26 +16,10 @@ int main(int argc, char** argv)
|
||||||
if (not input_file_graph.is_open()) {
|
if (not input_file_graph.is_open()) {
|
||||||
throw std::runtime_error(std::string("Could not open file for reading: ") + argv[1]);
|
throw std::runtime_error(std::string("Could not open file for reading: ") + argv[1]);
|
||||||
}
|
}
|
||||||
ED::Graph const graph = ED::Graph::read_dimacs(input_file_graph);
|
ED::Graph graph = ED::Graph::read_dimacs(input_file_graph);
|
||||||
|
|
||||||
ED::Graph greedy_matching_as_graph{graph.num_nodes()};
|
|
||||||
for (ED::NodeId node_id = 0; node_id < graph.num_nodes(); ++node_id)
|
|
||||||
{
|
|
||||||
if (greedy_matching_as_graph.node(node_id).neighbors().empty())
|
|
||||||
{
|
|
||||||
for (ED::NodeId neighbor_id : graph.node(node_id).neighbors())
|
|
||||||
{
|
|
||||||
if (greedy_matching_as_graph.node(neighbor_id).neighbors().empty())
|
|
||||||
{
|
|
||||||
greedy_matching_as_graph.add_edge(node_id, neighbor_id);
|
|
||||||
break; // Do not add more edges incident to this node!
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now, calculate the matching
|
// Now, calculate the matching
|
||||||
ED::Graph optimum_matching = Edmonds::maximum_matching(greedy_matching_as_graph);
|
ED::Graph optimum_matching = Edmonds::maximum_matching(graph);
|
||||||
std::cout << optimum_matching;
|
std::cout << optimum_matching;
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue