COIN-OR::LEMON - Graph Library

source: lemon-0.x/src/work/graphdemo.cc @ 326:e2f00e438c31

Last change on this file since 326:e2f00e438c31 was 35:65dca0f43fba, checked in by Alpar Juttner, 20 years ago

.

File size: 2.8 KB
Line 
1#include <iostream>
2#include <graph.h>
3#include <bfs.h>
4
5using namespace NEGRO;
6using namespace std;
7
8class NodeData;
9class EdgeData;
10
11typedef Graph<NodeData,EdgeData> TestGraph;
12
13class NodeData
14{
15public:
16  int id;
17  bool isVis;
18  bfs_node_data<TestGraph> bfs;
19};
20
21class EdgeData
22{
23public:
24  int id;
25};
26
27typedef Graph<NodeData,EdgeData> TestGraph;
28
29int main()
30{
31  TestGraph G;
32  TestGraph::NodeIterator n,m;
33  TestGraph::OutEdgeIterator e;
34  int i;
35
36 
37  //for(i=1;i<=10;i++) G.AddNode().n=i; //Ez nagyon rossz!!!!!!!!
38  for(i=1;i<=10;i++) G.AddNode()->id=i; //Ez a jo!!!!!!!!
39
40  //n=G.AddNode();
41 
42   //for(i=1;i<=10;i++) cout << (G.AddNode()->n=i) << ' ';
43   //cout << '\n';
44 
45  i=0;
46  for(G.GetFirst(n);n.Valid();n++)
47    for(G.GetFirst(m);m.Valid();++m)
48      if(n!=m) G.AddEdge(n,m)->id=++i;
49   
50  cout << "Number of edges: " << i << "\n\n";
51
52  TestGraph::AllEdgeIterator a;
53  for(G.GetFirst(a);a.Valid();++a)
54    cout << a->id << ":" << a.From()->id << "->" << a.To()->id << "   ";
55
56  cout << "\n\n\n";
57 
58  for(G.GetFirst(n);n.Valid();++n)
59    {
60      cout << n->id << "->";
61      for(G.GetFirst(e,n);e.Valid();++e)
62        cout << e->id << ":" << e.To()->id << ' ';
63      cout << '\n';
64    }
65 
66  cout << "\n\n\n\nB-verzio:\n\n\n";
67 
68  G.Clean();
69
70  for(i=1;i<=10;i++) G.AddNode()->id=i;
71 
72  i=0;
73  for(n=G.First();n.Valid();n++)
74    for(m=G.First();m.Valid();++m)
75      if(n!=m) G.AddEdge(n,m)->id=++i;
76   
77  ;
78  for(n=G.First();n.Valid();++n) //Demo
79    {
80      e=G.First(n);
81      while(e.Valid())
82        if((e->id)%2) G.Delete(e++);  //it may be nice to have a postfix ++
83        else ++e;
84    }
85 
86  // cout << "Number of edges: " << i << "\n\n";
87
88  for(a=G.First();a.Valid();++a)
89    cout << a->id << ": " << a.From()->id << "->" << a.To()->id << "   ";
90 
91  cout << "\n\n\n";
92 
93  for(n=G.First();n.Valid();++n)
94    {
95      cout << n->id << "->";
96      for(e=G.First(n);e.Valid();++e)
97        cout << e->id << ":" << e.To()->id << ' ';
98      cout << '\n';
99    }
100 
101  // For Marci's sake
102 
103  {
104    G.Clean();
105   
106    for(int i=1;i<=10;i++) G.AddNode()->id=i;
107   
108   
109    {  //I would'n say I'm really happy with this.
110      int i=0;
111      for(TestGraph::NodeIterator n(G);n.Valid();n++)
112        for(TestGraph::NodeIterator m(G);m.Valid();++m)
113          if(n!=m) G.AddEdge(n,m)->id=++i;
114    }
115   
116    for(TestGraph::NodeIterator n(G);n.Valid();++n) //Demo
117      {
118        TestGraph::OutEdgeIterator e(G,n);
119        while(e.Valid())
120          if((e->id)%2) G.Delete(e++);  //it may be nice to have a postfix ++
121          else ++e;
122      }
123   
124    for(TestGraph::AllEdgeIterator a(G);a.Valid();++a)
125      cout << a->id << ": " << a.From()->id << "->" << a.To()->id << "   ";
126   
127    cout << "\n\n\n";
128   
129    for(TestGraph::NodeIterator n(G);n.Valid();++n)
130      {
131        cout << n->id << "->";
132        for(TestGraph::OutEdgeIterator e(G,n);e.Valid();++e)
133          cout << e->id << ":" << e.To()->id << ' ';
134        cout << '\n';
135      }
136  }
137}
Note: See TracBrowser for help on using the repository browser.