Visitor interface for the dfs algorithm.
4 #include<lemon/list_graph.h>
5 #include<lemon/smart_graph.h>
6 #include<lemon/dijkstra.h>
7 #include<lemon/preflow.h>
9 #include"bench_tools.h"
12 using namespace lemon;
14 inline int numOfOnes(int n,int dim)
17 for(int i=0;i<dim;i++) {
24 inline int numOfZeros(int n,int dim)
27 for(int i=0;i<dim;i++) {
34 int main(int argc, char *argv[])
36 // typedef ListGraph Graph;
37 typedef SmartGraph Graph;
39 ///\bug GRAPH_TYPEDEF_FACTORY(Graph);
40 GRAPH_TYPEDEF_FACTORY_NOTYPENAME(Graph);
47 cout << "Usage: " << argv[0] << " dim\n";
51 int dim=atoi(argv[1]);
53 // cout << "Creating Hipercube ("<< (1<<dim) << " nodes, "
54 // << dim*(1<<dim) << " edges):";
58 addBiDirHyperCube(G,dim,nodes);
60 PrintTime("GENGRAPH",T);
63 Graph::EdgeMap<int> map(G);
64 for(int i=0;i<5;i++) {
66 for(int i=0;i<dim*(1<<dim);i++) P();
68 // for(EdgeIt e(G);G.valid(e);G.next(e)) map[e]=P();
70 ///\todo It must have been commented out because of
73 // for(int i=0;i<dim*(1<<dim);i++) {
74 // te.setToId(((long long int)(i)*93505)%(dim*(1<<dim)));
75 // // map[Edge(((long long int)(i)*2987)%(dim*(1<<dim)))]=P();
79 // for(int i=0;i<(1<<dim);i++) {
80 // int mul= (1<<(numOfZeros(i,dim)/4));
81 // for(OutEdgeIt e(G,nodes[i]);G.valid(e);G.next(e))
86 PrintTime("GENLENGTHS",T);
90 Dijkstra<Graph> Dij(G,map);
94 PrintTime("DIJKSTRA",T);
98 Graph::EdgeMap<int> flow(G);
100 Preflow<Graph,int> MF(G,nodes[0],nodes[1<<dim-1],map,flow);
101 for(int i=0;i<10;i++)
104 PrintTime("PREFLOW",T);