101 //   cout << "bfs and dfs iterator demo on the directed graph" << endl;  | 
   101 //   cout << "bfs and dfs iterator demo on the directed graph" << endl;  | 
   102 //   for(NodeIt n=G.first<NodeIt>(); G.valid(n); G.next(n)) {  | 
   102 //   for(NodeIt n=G.first<NodeIt>(); G.valid(n); G.next(n)) {  | 
   103 //     cout << G.id(n) << ": ";  | 
   103 //     cout << G.id(n) << ": ";  | 
   104 //     cout << "out edges: ";  | 
   104 //     cout << "out edges: ";  | 
   105 //     for(OutEdgeIt e=G.first<OutEdgeIt>(n); G.valid(e); G.next(e))   | 
   105 //     for(OutEdgeIt e=G.first<OutEdgeIt>(n); G.valid(e); G.next(e))   | 
   106 //       cout << G.id(G.tail(e)) << "->" << G.id(G.head(e)) << " ";  | 
   106 //       cout << G.id(G.source(e)) << "->" << G.id(G.target(e)) << " ";  | 
   107 //     cout << "in edges: ";  | 
   107 //     cout << "in edges: ";  | 
   108 //     for(InEdgeIt e=G.first<InEdgeIt>(n); G.valid(e); G.next(e))   | 
   108 //     for(InEdgeIt e=G.first<InEdgeIt>(n); G.valid(e); G.next(e))   | 
   109 //       cout << G.id(G.tail(e)) << "->" << G.id(G.head(e)) << " ";  | 
   109 //       cout << G.id(G.source(e)) << "->" << G.id(G.target(e)) << " ";  | 
   110 //     cout << endl;  | 
   110 //     cout << endl;  | 
   111 //   }  | 
   111 //   }  | 
   112   | 
   112   | 
   113   | 
   113   | 
   114   { | 
   114   { | 
   121   | 
   121   | 
   122     MaxMatching<Graph, int, Graph::EdgeMap<int>, Graph::EdgeMap<int> > max_flow_test(G, s_map, t_map, flow, cap);  | 
   122     MaxMatching<Graph, int, Graph::EdgeMap<int>, Graph::EdgeMap<int> > max_flow_test(G, s_map, t_map, flow, cap);  | 
   123     int i=0;  | 
   123     int i=0;  | 
   124     while (max_flow_test.augmentOnShortestPath()) {  | 
   124     while (max_flow_test.augmentOnShortestPath()) {  | 
   125 //       for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e))    | 
   125 //       for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e))    | 
   126 // 	std::cout << G.id(G.tail(e)) << "-" << flow.get(e) << "->" << G.id(G.head(e)) << " ";  | 
   126 // 	std::cout << G.id(G.source(e)) << "-" << flow.get(e) << "->" << G.id(G.target(e)) << " ";  | 
   127 //       std::cout<<std::endl;  | 
   127 //       std::cout<<std::endl;  | 
   128       ++i;   | 
   128       ++i;   | 
   129     }  | 
   129     }  | 
   130   | 
   130   | 
   131 //     std::cout << "maximum matching: "<< std::endl;  | 
   131 //     std::cout << "maximum matching: "<< std::endl;  | 
   132 //     for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e))    | 
   132 //     for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e))    | 
   133 //       if (flow.get(e))  | 
   133 //       if (flow.get(e))  | 
   134 // 	std::cout << G.id(G.tail(e)) << "-" << flow.get(e) << "->" << G.id(G.head(e)) << " ";  | 
   134 // 	std::cout << G.id(G.source(e)) << "-" << flow.get(e) << "->" << G.id(G.target(e)) << " ";  | 
   135 //     std::cout<<std::endl;  | 
   135 //     std::cout<<std::endl;  | 
   136 //     std::cout << "edges which are not in this maximum matching: "<< std::endl;  | 
   136 //     std::cout << "edges which are not in this maximum matching: "<< std::endl;  | 
   137 //     for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e))    | 
   137 //     for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e))    | 
   138 //       if (!flow.get(e))  | 
   138 //       if (!flow.get(e))  | 
   139 // 	std::cout << G.id(G.tail(e)) << "-" << flow.get(e) << "->" << G.id(G.head(e)) << " ";  | 
   139 // 	std::cout << G.id(G.source(e)) << "-" << flow.get(e) << "->" << G.id(G.target(e)) << " ";  | 
   140 //     std::cout<<std::endl;  | 
   140 //     std::cout<<std::endl;  | 
   141       | 
   141       | 
   142     std::cout << "elapsed time: " << ts << std::endl;  | 
   142     std::cout << "elapsed time: " << ts << std::endl;  | 
   143     std::cout << "number of augmentation phases: " << i << std::endl;   | 
   143     std::cout << "number of augmentation phases: " << i << std::endl;   | 
   144     std::cout << "flow value: "<< max_flow_test.flowValue() << std::endl;  | 
   144     std::cout << "flow value: "<< max_flow_test.flowValue() << std::endl;  | 
   154   | 
   154   | 
   155 //     MaxMatching<Graph, int, Graph::EdgeMap<int>, Graph::EdgeMap<int> > max_flow_test(G, s_map, t_map, flow, cap);  | 
   155 //     MaxMatching<Graph, int, Graph::EdgeMap<int>, Graph::EdgeMap<int> > max_flow_test(G, s_map, t_map, flow, cap);  | 
   156 //     int i=0;  | 
   156 //     int i=0;  | 
   157 //     while (max_flow_test.augmentOnBlockingFlow2()) {  | 
   157 //     while (max_flow_test.augmentOnBlockingFlow2()) {  | 
   158 // //       for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e))    | 
   158 // //       for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e))    | 
   159 // // 	std::cout << G.id(G.tail(e)) << "-" << flow.get(e) << "->" << G.id(G.head(e)) << " ";  | 
   159 // // 	std::cout << G.id(G.source(e)) << "-" << flow.get(e) << "->" << G.id(G.target(e)) << " ";  | 
   160 // //       std::cout<<std::endl;  | 
   160 // //       std::cout<<std::endl;  | 
   161 //       ++i;   | 
   161 //       ++i;   | 
   162 //     }  | 
   162 //     }  | 
   163   | 
   163   | 
   164 // //     std::cout << "maximum matching: "<< std::endl;  | 
   164 // //     std::cout << "maximum matching: "<< std::endl;  | 
   165 // //     for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e))    | 
   165 // //     for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e))    | 
   166 // //       if (flow.get(e))  | 
   166 // //       if (flow.get(e))  | 
   167 // // 	std::cout << G.id(G.tail(e)) << "-" << flow.get(e) << "->" << G.id(G.head(e)) << " ";  | 
   167 // // 	std::cout << G.id(G.source(e)) << "-" << flow.get(e) << "->" << G.id(G.target(e)) << " ";  | 
   168 // //     std::cout<<std::endl;  | 
   168 // //     std::cout<<std::endl;  | 
   169 // //     std::cout << "edges which are not in this maximum matching: "<< std::endl;  | 
   169 // //     std::cout << "edges which are not in this maximum matching: "<< std::endl;  | 
   170 // //     for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e))    | 
   170 // //     for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e))    | 
   171 // //       if (!flow.get(e))  | 
   171 // //       if (!flow.get(e))  | 
   172 // // 	std::cout << G.id(G.tail(e)) << "-" << flow.get(e) << "->" << G.id(G.head(e)) << " ";  | 
   172 // // 	std::cout << G.id(G.source(e)) << "-" << flow.get(e) << "->" << G.id(G.target(e)) << " ";  | 
   173 // //     std::cout<<std::endl;  | 
   173 // //     std::cout<<std::endl;  | 
   174       | 
   174       | 
   175 //     std::cout << "elapsed time: " << ts << std::endl;  | 
   175 //     std::cout << "elapsed time: " << ts << std::endl;  | 
   176 //     std::cout << "number of augmentation phases: " << i << std::endl;   | 
   176 //     std::cout << "number of augmentation phases: " << i << std::endl;   | 
   177 //     std::cout << "flow value: "<< max_flow_test.flowValue() << std::endl;  | 
   177 //     std::cout << "flow value: "<< max_flow_test.flowValue() << std::endl;  | 
   196       | 
   196       | 
   197   | 
   197   | 
   198 //     std::cout << "maximum matching: "<< std::endl;  | 
   198 //     std::cout << "maximum matching: "<< std::endl;  | 
   199 //     for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e))    | 
   199 //     for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e))    | 
   200 //       if (flow.get(e))  | 
   200 //       if (flow.get(e))  | 
   201 // 	std::cout << G.id(G.tail(e)) << "-" << flow.get(e) << "->" << G.id(G.head(e)) << " ";  | 
   201 // 	std::cout << G.id(G.source(e)) << "-" << flow.get(e) << "->" << G.id(G.target(e)) << " ";  | 
   202 //     std::cout<<std::endl;  | 
   202 //     std::cout<<std::endl;  | 
   203 //     std::cout << "edges which are not in this maximum matching: "<< std::endl;  | 
   203 //     std::cout << "edges which are not in this maximum matching: "<< std::endl;  | 
   204 //     for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e))    | 
   204 //     for(EdgeIt e=G.first<EdgeIt>(); G.valid(e); G.next(e))    | 
   205 //       if (!flow.get(e))  | 
   205 //       if (!flow.get(e))  | 
   206 // 	std::cout << G.id(G.tail(e)) << "-" << flow.get(e) << "->" << G.id(G.head(e)) << " ";  | 
   206 // 	std::cout << G.id(G.source(e)) << "-" << flow.get(e) << "->" << G.id(G.target(e)) << " ";  | 
   207 //     std::cout<<std::endl;  | 
   207 //     std::cout<<std::endl;  | 
   208       | 
   208       | 
   209       | 
   209       | 
   210     std::cout << "elapsed time: " << ts << std::endl;  | 
   210     std::cout << "elapsed time: " << ts << std::endl;  | 
   211     //std::cout << "number of augmentation phases: " << i << std::endl;   | 
   211     //std::cout << "number of augmentation phases: " << i << std::endl;   |