1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/src/work/bfsdemo2.cc Tue Dec 16 16:19:08 2003 +0000
1.3 @@ -0,0 +1,38 @@
1.4 +#include <iostream>
1.5 +#include <graph.h>
1.6 +#include <bfs.h>
1.7 +
1.8 +using namespace NEGRO;
1.9 +using namespace std;
1.10 +
1.11 +typedef Graph<int,int> TestGraph;
1.12 +
1.13 +int gcd(int a,int b) {int c; while((c=a%b)) {a=b;b=c;} ; return b;}
1.14 +
1.15 +int main()
1.16 +{
1.17 + TestGraph G;
1.18 +
1.19 + TestGraph::NodeIterator tn,n2;
1.20 +
1.21 + for(int i=1;i<=5000;i++)
1.22 + {
1.23 + *(tn=G.AddNode())=i;
1.24 + if(i==2) n2=tn;
1.25 + }
1.26 +
1.27 + for(TestGraph::NodeIterator n(G);n.isValid();++n)
1.28 + for(TestGraph::NodeIterator m(G);m.isValid();++m)
1.29 + if(gcd(*n,*m)>1) G.AddEdge(n,m);
1.30 +
1.31 + Bfs<default_bfs_T<TestGraph> > bfs;
1.32 +
1.33 + bfs.SetG(G);
1.34 + bfs.Init(n2);
1.35 + bfs.Run();
1.36 +
1.37 + for(TestGraph::NodeIterator n(G);n.isValid();++n)
1.38 + cout << Get(bfs.tree_map,n).From() << "->" << Get(bfs.tree_map,n).To()
1.39 + << '\n';
1.40 +
1.41 +}