1 //lasd megjegyzes a 49-es sorban |
|
2 #include <iostream> |
1 #include <iostream> |
3 #include <queue> |
2 #include <queue> |
4 #include <vector> |
3 #include <vector> |
5 #include <math.h> |
4 #include <math.h> |
6 |
5 |
7 #include <lemon/invalid.h> |
6 #include <lemon/invalid.h> |
8 #include <lemon/list_graph.h> |
7 #include <lemon/list_graph.h> |
|
8 #include <lemon/smart_graph.h> |
9 #include <matching.h> |
9 #include <matching.h> |
10 |
10 |
11 using namespace lemon; |
11 using namespace lemon; |
|
12 using namespace std; |
12 |
13 |
13 int main(int, char **) { |
|
14 |
14 |
15 typedef UndirListGraph Graph; |
15 int main() { |
|
16 |
|
17 typedef UndirSmartGraph Graph; |
16 |
18 |
17 typedef Graph::Edge Edge; |
19 typedef Graph::Edge Edge; |
18 typedef Graph::UndirEdgeIt UndirEdgeIt; |
20 typedef Graph::UndirEdgeIt UndirEdgeIt; |
19 typedef Graph::IncEdgeIt IncEdgeIt; |
21 typedef Graph::IncEdgeIt IncEdgeIt; |
20 typedef Graph::NodeIt NodeIt; |
22 typedef Graph::NodeIt NodeIt; |
21 typedef Graph::Node Node; |
23 typedef Graph::Node Node; |
|
24 |
|
25 typedef Graph::OutEdgeIt OutEdgeIt; |
22 |
26 |
23 Graph G; |
27 Graph G; |
24 |
28 |
25 G.clear(); |
29 // G.clear(); |
26 std::vector<Graph::Node> nodes; |
30 std::vector<Graph::Node> nodes; |
27 for (int i=0; i<5; ++i) |
31 for (int i=0; i<5; ++i) |
28 nodes.push_back(G.addNode()); |
32 nodes.push_back(G.addNode()); |
29 G.addEdge(nodes[0], nodes[0]); |
33 G.addEdge(nodes[0], nodes[0]); |
30 G.addEdge(nodes[0], nodes[1]); |
34 G.addEdge(nodes[0], nodes[1]); |
33 G.addEdge(nodes[2], nodes[3]); |
37 G.addEdge(nodes[2], nodes[3]); |
34 G.addEdge(nodes[1], nodes[2]); |
38 G.addEdge(nodes[1], nodes[2]); |
35 G.addEdge(nodes[2], nodes[4]); |
39 G.addEdge(nodes[2], nodes[4]); |
36 |
40 |
37 for(UndirEdgeIt e(G); e!=INVALID; ++e) { |
41 for(UndirEdgeIt e(G); e!=INVALID; ++e) { |
38 std::cout<<G.id(e)<<" : "<<G.id(G.source(e))<<" " <<G.id(G.target(e))<<std::endl; |
42 std::cout<<G.id(e)<<" : "<<G.id(G.source(e)) |
|
43 <<" " <<G.id(G.target(e))<<std::endl; |
39 } |
44 } |
40 |
45 |
41 std::cout <<"Nodes:"<<std::endl; |
46 std::cout <<"Nodes:"<<std::endl; |
42 |
47 |
43 for(NodeIt v(G); v!=INVALID; ++v) { |
48 for(NodeIt v(G); v!=INVALID; ++v) { |
44 std::cout<<G.id(v)<<std::endl; |
49 std::cout<<G.id(v)<<std::endl; |
45 } |
50 } |
46 |
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 |
47 std::cout<<"Edges of node " << G.id(nodes[1])<<std::endl; |
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 } |
48 |
73 |
49 for( IncEdgeIt f(G,nodes[1]); f!=INVALID; ++f ) { |
74 //return 0; |
50 std::cout<<"edge " << G.id(f)<< " goes to " << G.id(G.target(f))<<std::endl; |
75 |
51 }//ez a ket for ciklus meg lefut - bar hibas eleken iteral -, de a matching.h-s mar segfaultol |
76 //ez a ket for ciklus meg lefut - bar hibas eleken iteral -, de a |
|
77 //matching.h-s mar segfaultol |
52 |
78 |
53 for( IncEdgeIt f(G,nodes[1]); f!=INVALID; ++f ) { |
79 for( IncEdgeIt f(G,nodes[1]); f!=INVALID; ++f ) { |
54 std::cout<<"edge " << G.id(f)<< " goes to " << G.id(G.target(f))<<std::endl; |
80 std::cout<<"edge " << G.id(f)<< " goes to " << G.id(G.target(f))<<std::endl; |
55 } |
81 } |
56 |
82 |