src/work/graphdemo.cc
changeset 1 207fb3c727cb
child 2 37117ebbabe2
equal deleted inserted replaced
-1:000000000000 0:a80cd5fb9704
       
     1 #include <iostream>
       
     2 #include <graph.h>
       
     3 
       
     4 using namespace NEGRO;
       
     5 using namespace std;
       
     6 
       
     7 class NodeData;
       
     8 class EdgeData;
       
     9 
       
    10 typedef Graph<NodeData,EdgeData> TestGraph;
       
    11 
       
    12 class NodeData
       
    13 {
       
    14 public:
       
    15   int id;
       
    16   bool isVis;
       
    17 };
       
    18 
       
    19 class EdgeData
       
    20 {
       
    21 public:
       
    22   int id;
       
    23 };
       
    24 
       
    25 
       
    26 typedef Graph<NodeData,EdgeData> TestGraph;
       
    27 
       
    28 void main()
       
    29 {
       
    30   TestGraph G;
       
    31   TestGraph::NodeIterator n,m,o,p,q;
       
    32   TestGraph::OutEdgeIterator e,f,g,h;
       
    33   int i,j,k;
       
    34 
       
    35   
       
    36   //for(i=1;i<=10;i++) G.AddNode().n=i; //Ez nagyon rossz!!!!!!!!
       
    37   for(i=1;i<=10;i++) G.AddNode()->id=i; //Ez a jo!!!!!!!!
       
    38 
       
    39   //n=G.AddNode();
       
    40   
       
    41    //for(i=1;i<=10;i++) cout << (G.AddNode()->n=i) << ' ';
       
    42    //cout << '\n';
       
    43  
       
    44   i=0;
       
    45   for(G.GetFirst(n);n.isValid();n++)
       
    46     for(G.GetFirst(m);m.isValid();++m)
       
    47       if(n!=m) G.AddEdge(n,m)->id=++i;
       
    48    
       
    49   cout << "Number of edges: " << i << "\n\n";
       
    50 
       
    51   TestGraph::AllEdgeIterator a;
       
    52   for(G.GetFirst(a);a.isValid();++a)
       
    53     cout << a->id << ":" << a.From()->id << "->" << a.To()->id << "   ";
       
    54 
       
    55   cout << "\n\n\n";
       
    56   
       
    57   for(G.GetFirst(n);n.isValid();++n)
       
    58     {
       
    59       cout << n->id << "->";
       
    60       for(G.GetFirst(e,n);e.isValid();++e)
       
    61 	cout << e->id << ":" << e.To()->id << ' ';
       
    62       cout << '\n';
       
    63     }
       
    64   
       
    65   cout << "\n\n\n\nB-verzio:\n\n\n";
       
    66   
       
    67   G.Clean();
       
    68 
       
    69   for(i=1;i<=10;i++) G.AddNode()->id=i;
       
    70   
       
    71   i=0;
       
    72   for(n=G.First();n.isValid();n++)
       
    73     for(m=G.First();m.isValid();++m)
       
    74       if(n!=m) G.AddEdge(n,m)->id=++i;
       
    75    
       
    76   ;
       
    77   for(n=G.First();n.isValid();++n)
       
    78     {
       
    79       e=G.First(n);
       
    80       while(e.isValid())
       
    81 	if((e->id)%2) G.Delete(e++);
       
    82 	else ++e;
       
    83     }
       
    84   
       
    85   for(a=G.First();a.isValid();++a)
       
    86     cout << a->id << ": " << a.From()->id << "->" << a.To()->id << "   ";
       
    87   
       
    88   cout << "\n\n\n";
       
    89   
       
    90   for(n=G.First();n.isValid();++n)
       
    91     {
       
    92       cout << n->id << "->";
       
    93       for(e=G.First(n);e.isValid();++e)
       
    94 	cout << e->id << ":" << e.To()->id << ' ';
       
    95       cout << '\n';
       
    96     }
       
    97   
       
    98 }