| Example Weighted Perfect MatchingThe following program shows how the functions  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_min=MIN_WEIGHT_PERFECT_MATCHING(G,weight);
  std::cout << "Minimum Weighted Perfect Matching:" << std::endl;
  int weight_M_min=0;
  edge e;
  forall(e,M_min) {G.print_edge(e); weight_M_min+=weight[e];}
  std::cout << " weight: " << weight_M_min << std::endl;
  
  list<edge> M_max=MAX_WEIGHT_PERFECT_MATCHING(G,weight);
  std::cout << "Maximum Weighted Perfect Matching:" << std::endl;
  int weight_M_max=0;
  forall(e,M_max) {G.print_edge(e); weight_M_max+=weight[e];}
  std::cout << " weight: " << weight_M_max << std::endl;
  return 0;
} | See also:Weighted Perfect Matching in General Graphs Manual Entries:Manual Page General Weighted Matching |