COIN-OR::LEMON - Graph Library

source: lemon-0.x/src/work/jacint/bug.cc @ 1060:7a24bb2e7480

Last change on this file since 1060:7a24bb2e7480 was 1060:7a24bb2e7480, checked in by Mihaly Barasz, 20 years ago

Nasty bug in undir_graph_extender.h

File size: 2.2 KB
Line 
1#include <iostream>
2#include <queue>
3#include <vector>
4#include <math.h>
5
6#include <lemon/invalid.h>
7#include <lemon/list_graph.h>
8#include <lemon/smart_graph.h>
9#include <matching.h>
10
11using namespace lemon;
12using namespace std;
13
14
15int main() {
16
17  typedef UndirSmartGraph Graph;
18
19  typedef Graph::Edge Edge;
20  typedef Graph::UndirEdgeIt UndirEdgeIt;
21  typedef Graph::IncEdgeIt IncEdgeIt;
22  typedef Graph::NodeIt NodeIt;
23  typedef Graph::Node Node;
24
25  typedef Graph::OutEdgeIt OutEdgeIt;
26   
27  Graph G;
28
29  // G.clear();
30  std::vector<Graph::Node> nodes;
31  for (int i=0; i<5; ++i)
32      nodes.push_back(G.addNode());
33  G.addEdge(nodes[0], nodes[0]);
34  G.addEdge(nodes[0], nodes[1]);
35  G.addEdge(nodes[0], nodes[2]); 
36  G.addEdge(nodes[0], nodes[4]);
37  G.addEdge(nodes[2], nodes[3]);
38  G.addEdge(nodes[1], nodes[2]);
39  G.addEdge(nodes[2], nodes[4]);
40
41  for(UndirEdgeIt e(G); e!=INVALID; ++e) {
42    std::cout<<G.id(e)<<" : "<<G.id(G.source(e))
43             <<" " <<G.id(G.target(e))<<std::endl;
44  }
45
46  std::cout <<"Nodes:"<<std::endl;
47
48  for(NodeIt v(G); v!=INVALID; ++v) {
49    std::cout<<G.id(v)<<std::endl;
50  }
51
52  cout << "Dev Out edges from node " << G.id(nodes[1])<<std::endl;
53  Edge f;
54  for(G.firstOut(f, nodes[1]); f!=INVALID; G.nextOut(f)) {
55    cout<<"edge " << G.id(f) << " goes"
56             <<" from "<< G.id(G.source(f))
57             << " to " << G.id(G.target(f))<<std::endl;
58  }
59
60  cout << "Out edges from node " << G.id(nodes[1])<<std::endl;
61  for( OutEdgeIt f(G,nodes[1]); f!=INVALID; ++f ) {
62    cout<<"edge " << G.id(f) << " goes"
63             <<" from "<< G.id(G.source(f))
64             << " to " << G.id(G.target(f))<<std::endl;
65  }
66
67  std::cout<<"Edges of node " << G.id(nodes[1])<<std::endl;
68  for( IncEdgeIt f(G,nodes[1]); f!=INVALID; ++f ) {
69    cout<<"edge " << G.id(f) << " goes"
70             <<" from "<< G.id(G.source(f))
71             << " to " << G.id(G.target(f))<<std::endl;
72  }
73
74  //return 0;
75
76  //ez a ket for ciklus meg lefut - bar hibas eleken iteral -, de a
77  //matching.h-s mar segfaultol
78
79  for( IncEdgeIt f(G,nodes[1]); f!=INVALID; ++f ) {
80    std::cout<<"edge " << G.id(f)<< " goes to " << G.id(G.target(f))<<std::endl;
81  }
82
83  MaxMatching<Graph> max_matching(G);
84  max_matching.runEdmonds(0);
85 
86  return 0;
87}
88 
Note: See TracBrowser for help on using the repository browser.