src/work/marci/edmonds_karp_demo.cc
changeset 103 063de9e1be98
parent 73 1b4a25e49222
child 105 a3c73e9b9b2e
equal deleted inserted replaced
0:c3c76e94671f 1:f6e75d0ca683
    17   ListGraph G;
    17   ListGraph G;
    18   NodeIt s, t;
    18   NodeIt s, t;
    19   ListGraph::EdgeMap<int> cap(G);
    19   ListGraph::EdgeMap<int> cap(G);
    20   readDimacsMaxFlow(std::cin, G, s, t, cap);
    20   readDimacsMaxFlow(std::cin, G, s, t, cap);
    21 
    21 
       
    22 /*
       
    23   double pre_time_copy=currTime();
       
    24   ListGraph F;
       
    25   ListGraph::NodeMap<NodeIt> G_to_F(G);
       
    26   typedef ListGraph::EachNodeIt EachNodeIt;
       
    27   for(EachNodeIt n=G.first<EachNodeIt>(); n.valid(); ++n) {
       
    28     G_to_F.set(n, F.addNode());
       
    29   }
       
    30   for(EachEdgeIt e=G.first<EachEdgeIt>(); e.valid(); ++e) {
       
    31     F.addEdge(G_to_F.get(G.tail(e)), G_to_F.get(G.head(e)));
       
    32   }
       
    33   double post_time_copy=currTime();
       
    34   std::cout << "copy time: " << post_time_copy-pre_time_copy << " sec"<< std::endl; 
       
    35 */
       
    36 
    22   std::cout << "edmonds karp demo..." << std::endl;
    37   std::cout << "edmonds karp demo..." << std::endl;
    23   ListGraph::EdgeMap<int> flow(G); //0 flow
    38   ListGraph::EdgeMap<int> flow(G); //0 flow
    24 
    39 
    25   double pre_time=currTime();
    40   double pre_time=currTime();
    26   MaxFlow<ListGraph, int, ListGraph::EdgeMap<int>, ListGraph::EdgeMap<int> > max_flow_test(G, s, t, flow, cap);
    41   MaxFlow<ListGraph, int, ListGraph::EdgeMap<int>, ListGraph::EdgeMap<int> > max_flow_test(G, s, t, flow, cap);
       
    42   max_flow_test.augmentWithBlockingFlow();
    27   max_flow_test.run();
    43   max_flow_test.run();
    28   double post_time=currTime();
    44   double post_time=currTime();
    29   //std::cout << "maximum flow: "<< std::endl;
    45   //std::cout << "maximum flow: "<< std::endl;
    30   //for(EachEdgeIt e=G.first<EachEdgeIt>(); e.valid(); ++e) { 
    46   //for(EachEdgeIt e=G.first<EachEdgeIt>(); e.valid(); ++e) { 
    31   //  std::cout<<"("<<G.tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";
    47   //  std::cout<<"("<<G.tail(e)<< "-"<<flow.get(e)<<"->"<<G.head(e)<<") ";