src/work/bfsdemo2.cc
changeset 6 b63d1bc367f7
child 8 cd54905012bc
     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 +}