Example Maximum Weighted Matching in General GraphsThe following program shows how the function Remark: The graph algorithms in LEDA are generic, that is, they accept graphs as well as parameterized graphs. In
#include <LEDA/graph/graph.h>
#include <LEDA/graph/mw_matching.h>
using namespace leda;
int main()
{
graph G;
node n0=G.new_node(); node n1=G.new_node();
node n2=G.new_node(); node n3=G.new_node();
node n4=G.new_node(); node n5=G.new_node();
edge e0=G.new_edge(n0,n1); edge e1=G.new_edge(n1,n2);
edge e2=G.new_edge(n2,n3); edge e3=G.new_edge(n3,n0);
edge e4=G.new_edge(n0,n4); edge e5=G.new_edge(n3,n4);
edge e6=G.new_edge(n1,n5); edge e7=G.new_edge(n2,n5);
edge e8=G.new_edge(n4,n5);
edge_array<int> weight(G);
weight[e0]=4; weight[e1]=4; weight[e2]=4;
weight[e3]=4; weight[e4]=12; weight[e5]=12;
weight[e6]=12; weight[e7]=12; weight[e8]=8;
list<edge> M=MAX_WEIGHT_MATCHING(G,weight);
std::cout << "Maximum Weighted Matching:" << std::endl;
int weight_M=0;
edge e;
forall(e,M) {G.print_edge(e); weight_M+=weight[e];}
std::cout << " weight: " << weight_M << std::endl;
return 0;
}
|
See also:Maximum Weighted Matching in General Graphs Manual Entries: Manual Page General Weighted Matching |