# HG changeset patch # User marci # Date 1079538060 0 # Node ID 19f8bd411014b7bb542898cb1124897435f8c635 # Parent a1680b3c516cd5b0ab4e963afd54204a7ca4ad43 . diff -r a1680b3c516c -r 19f8bd411014 src/work/marci/max_bipartite_matching_demo.cc --- a/src/work/marci/max_bipartite_matching_demo.cc Wed Mar 17 15:09:48 2004 +0000 +++ b/src/work/marci/max_bipartite_matching_demo.cc Wed Mar 17 15:41:00 2004 +0000 @@ -55,24 +55,46 @@ std::vector s_nodes; std::vector t_nodes; - for(int i=0; i<20; ++i) { + for(int i=0; i<4; ++i) { s_nodes.push_back(G.addNode()); } - for(int i=0; i<20; ++i) { + for(int i=0; i<4; ++i) { t_nodes.push_back(G.addNode()); } - random_init(); - for(int i=0; i<50; ++i) { - G.addEdge(s_nodes[random(20)], t_nodes[random(20)]); - } +// random_init(); +// for(int i=0; i<6; ++i) { +// G.addEdge(s_nodes[random(4)], t_nodes[random(4)]); +// } + + G.addEdge(s_nodes[2], t_nodes[4-4]); + G.addEdge(s_nodes[2], t_nodes[7-4]); + G.addEdge(s_nodes[2], t_nodes[4-4]); + G.addEdge(s_nodes[3], t_nodes[6-4]); + G.addEdge(s_nodes[3], t_nodes[5-4]); + G.addEdge(s_nodes[3], t_nodes[5-4]); + + Graph::NodeMap s_map(G); //false Graph::NodeMap t_map(G); //false - for(int i=0; i<20; ++i) { + for(int i=0; i<4; ++i) { s_map.set(s_nodes[i], true); t_map.set(t_nodes[i], true); } + cout << "bfs and dfs iterator demo on the directed graph" << endl; + for(NodeIt n=G.first(); G.valid(n); G.next(n)) { + cout << G.id(n) << ": "; + cout << "out edges: "; + for(OutEdgeIt e=G.first(n); G.valid(e); G.next(e)) + cout << G.id(G.tail(e)) << "->" << G.id(G.head(e)) << " "; + cout << "in edges: "; + for(InEdgeIt e=G.first(n); G.valid(e); G.next(e)) + cout << G.id(G.tail(e)) << "->" << G.id(G.head(e)) << " "; + cout << endl; + } + + { std::cout << "on-the-fly max bipartite matching demo on wrapped leda graph..." << std::endl; Graph::EdgeMap flow(G); //0 flow @@ -92,11 +114,17 @@ ++i; } -// std::cout << "maximum flow: "<< std::endl; -// for(EdgeIt e=G.first(); e.valid(); ++e) { -// std::cout<<"("<"<(); G.valid(e); G.next(e)) + if (flow.get(e)) + std::cout << G.id(G.tail(e)) << "-" << flow.get(e) << "->" << G.id(G.head(e)) << " "; + std::cout<(); G.valid(e); G.next(e)) + if (!flow.get(e)) + std::cout << G.id(G.tail(e)) << "-" << flow.get(e) << "->" << G.id(G.head(e)) << " "; + std::cout<