#include #include #include using namespace NEGRO; using namespace std; class NodeData; class EdgeData; typedef Graph TestGraph; class NodeData { public: int id; bool isVis; bfs_node_data bfs; }; class EdgeData { public: int id; }; typedef Graph TestGraph; int main() { TestGraph G; TestGraph::NodeIterator n,m; TestGraph::OutEdgeIterator e; int i; //for(i=1;i<=10;i++) G.AddNode().n=i; //Ez nagyon rossz!!!!!!!! for(i=1;i<=10;i++) G.AddNode()->id=i; //Ez a jo!!!!!!!! //n=G.AddNode(); //for(i=1;i<=10;i++) cout << (G.AddNode()->n=i) << ' '; //cout << '\n'; i=0; for(G.GetFirst(n);n.Valid();n++) for(G.GetFirst(m);m.Valid();++m) if(n!=m) G.AddEdge(n,m)->id=++i; cout << "Number of edges: " << i << "\n\n"; TestGraph::AllEdgeIterator a; for(G.GetFirst(a);a.Valid();++a) cout << a->id << ":" << a.From()->id << "->" << a.To()->id << " "; cout << "\n\n\n"; for(G.GetFirst(n);n.Valid();++n) { cout << n->id << "->"; for(G.GetFirst(e,n);e.Valid();++e) cout << e->id << ":" << e.To()->id << ' '; cout << '\n'; } cout << "\n\n\n\nB-verzio:\n\n\n"; G.Clean(); for(i=1;i<=10;i++) G.AddNode()->id=i; i=0; for(n=G.First();n.Valid();n++) for(m=G.First();m.Valid();++m) if(n!=m) G.AddEdge(n,m)->id=++i; ; for(n=G.First();n.Valid();++n) //Demo { e=G.First(n); while(e.Valid()) if((e->id)%2) G.Delete(e++); //it may be nice to have a postfix ++ else ++e; } // cout << "Number of edges: " << i << "\n\n"; for(a=G.First();a.Valid();++a) cout << a->id << ": " << a.From()->id << "->" << a.To()->id << " "; cout << "\n\n\n"; for(n=G.First();n.Valid();++n) { cout << n->id << "->"; for(e=G.First(n);e.Valid();++e) cout << e->id << ":" << e.To()->id << ' '; cout << '\n'; } // For Marci's sake { G.Clean(); for(int i=1;i<=10;i++) G.AddNode()->id=i; { //I would'n say I'm really happy with this. int i=0; for(TestGraph::NodeIterator n(G);n.Valid();n++) for(TestGraph::NodeIterator m(G);m.Valid();++m) if(n!=m) G.AddEdge(n,m)->id=++i; } for(TestGraph::NodeIterator n(G);n.Valid();++n) //Demo { TestGraph::OutEdgeIterator e(G,n); while(e.Valid()) if((e->id)%2) G.Delete(e++); //it may be nice to have a postfix ++ else ++e; } for(TestGraph::AllEdgeIterator a(G);a.Valid();++a) cout << a->id << ": " << a.From()->id << "->" << a.To()->id << " "; cout << "\n\n\n"; for(TestGraph::NodeIterator n(G);n.Valid();++n) { cout << n->id << "->"; for(TestGraph::OutEdgeIterator e(G,n);e.Valid();++e) cout << e->id << ":" << e.To()->id << ' '; cout << '\n'; } } }