diff -r ee5959aa4410 -r c280de819a73 src/work/marci/merge_node_graph_wrapper_test.cc --- a/src/work/marci/merge_node_graph_wrapper_test.cc Sun Apr 17 18:57:22 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,258 +0,0 @@ -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include - -using std::cout; -using std::endl; - -using namespace lemon; -using namespace lemon::concept; - -class Graph3 : ListGraph { -public: - class Node : public ListGraph::Node { }; - class Edge { }; -}; - -template -void printGraph(const Graph& g) { - cout << " nodes:" << endl; - for (typename Graph::NodeIt n(g); n!=INVALID; ++n) { - cout << " " << g.id(n) << ": out edges:" << endl; - for (typename Graph::OutEdgeIt e(g, n); e!=INVALID; ++e) - cout << " " << g.id(g.source(e)) << "->" << g.id(g.target(e)) << endl; - } - cout << " edges:" << endl; - for (typename Graph::EdgeIt e(g); e!=INVALID; ++e) { - cout << " " << g.id(e) << ": " - << g.id(g.source(e)) << "->" << g.id(g.target(e)) << endl; - } -} - -int main() { - { - cout << "FIRST TEST" << endl; - //typedef SmartGraph Graph1; - typedef ListGraph Graph1; - typedef ListGraph Graph2; - typedef SmartGraph Graph3; - -// { -// checkConcept >(); -// MergeEdgeGraphWrapper::printNode(); -// MergeEdgeGraphWrapper::printEdge(); -// checkConcept >(); -// MergeEdgeGraphWrapper::printNode(); -// MergeEdgeGraphWrapper::printEdge(); -// typedef ResGraphWrapper, ConstMap > Graph4; -// checkConcept >(); -// MergeEdgeGraphWrapper::printNode(); -// MergeEdgeGraphWrapper::printEdge(); -// checkConcept >(); -// MergeEdgeGraphWrapper::printNode(); -// MergeEdgeGraphWrapper::printEdge(); -// } - - Graph1 g1; - Graph2 g2; - typedef MergeEdgeGraphWrapper GW; - GW gw(g1, g2); - Graph1::Node s1, t1; - Graph2::Node s2, t2; - Graph1::EdgeMap cap1(g1); - Graph2::EdgeMap cap2(g2); - - std::ifstream f1("graph1.dim"); - std::ifstream f2("graph2.dim"); - readDimacs(f1, g1); - readDimacs(f2, g2); - -// GW::NodeMap ize(gw, 8); -// for (GW::NodeIt n(gw); n!=INVALID; ++n) ize.set(n, 9); -// GW::EdgeMap mize(gw, 8); -// for (GW::EdgeIt n(gw); n!=INVALID; ++n) mize.set(n, 7); - -// std::ifstream f1("flow-1.dim"); -// std::ifstream f2("flow2.dim"); -// readDimacs(f1, g1, cap1, s1, t1); -// readDimacs(f2, g2, cap2, s2, t2); - -// GW::EdgeMap cap(gw); -// for (GW::EdgeIt e(gw); e!=INVALID; ++e) { -// if (gw.forward(e)) cap.set(e, cap1[e]); -// if (gw.backward(e)) cap.set(e, cap2[e]); -// } - -// { -// GW::EdgeMap flow(gw, 0); -// Preflow preflow(gw, GW::Node(s1, INVALID, false), -// GW::Node(t1, INVALID, false), cap, flow); -// preflow.run(); -// std::cout << "s1->t1: " << preflow.flowValue() << std::endl; -// } -// { -// GW::EdgeMap flow(gw, 0); -// Preflow preflow(gw, GW::Node(INVALID, s2, true), -// GW::Node(INVALID, t2, true), cap, flow); -// preflow.run(); -// std::cout << "s2->t2: " << preflow.flowValue() << std::endl; -// } -// { -// GW::EdgeMap flow(gw, 0); -// Preflow preflow(gw, GW::Node(s1, INVALID, false), -// GW::Node(INVALID, t2, true), cap, flow); -// preflow.run(); -// std::cout << "s1->t2: " << preflow.flowValue() << std::endl; -// } -// { -// GW::EdgeMap flow(gw, 0); -// Preflow preflow(gw, GW::Node(INVALID, s2, true), -// GW::Node(s1, INVALID, false), cap, flow); -// preflow.run(); -// std::cout << "s2->t1: " << preflow.flowValue() << std::endl; -// } - cout << "1st graph" << endl; - printGraph(g1); - - cout << "2nd graph" << endl; - printGraph(g2); - - cout << "merged graph" << endl; - printGraph(gw); - -// for (GW::NodeIt n(gw); n!=INVALID; ++n) -// std::cout << ize[n] << std::endl; -// for (GW::EdgeIt n(gw); n!=INVALID; ++n) -// std::cout << mize[n] << std::endl; - - typedef NewEdgeSetGraphWrapper2 GWW; -// { -// checkConcept(); -// } - - GWW gww(gw); - - cout << "new edges graph" << endl; - printGraph(gww); - - GWW::NodeIt n(gww); - GWW::Node n1=n; - ++n; - GWW::Node n2=n; - gww.addEdge(n1, n2); - // gww.addNode(); - // gww.addNode(); - - cout << "new edges graph" << endl; - printGraph(gww); - - typedef AugmentingGraphWrapper GWWW; - // { - // checkConcept(); - // } - GWWW gwww(gw, gww); - - cout << "fully merged graph" << endl; - printGraph(gwww); - } - - - { - cout << "SECOND TEST" << endl; - typedef SmartGraph Graph1; -// { -// checkConcept(); -// } - - Graph1 g1; - - FullGraph pre_g2(2); - ConstMap const_false_map(false); - typedef EdgeSubGraphWrapper > - Graph2; -// { -// checkConcept(); -// } - - Graph2 g2(pre_g2, const_false_map); - - typedef MergeEdgeGraphWrapper GW; -// { -// checkConcept(); -// } - GW gw(g1, g2); - GW::Node sw; - GW::Node tw; - { - Graph2::NodeIt k(g2); - sw=GW::Node(INVALID, k, true); - ++k; - tw=GW::Node(INVALID, k, true); - } - - std::ifstream f1("graph2.dim"); - readDimacs(f1, g1); - - cout << "1st graph" << endl; - printGraph(g1); - - cout << "2nd graph" << endl; - printGraph(g2); - - cout << "merged graph" << endl; - printGraph(gw); - - typedef ListGraph Graph3; - //typedef SmartGraph Graph3; - Graph3 g3; - GW::NodeMap gwn(gw); - Graph3::NodeMap g3n(g3); - for (GW::NodeIt n(gw); n!=INVALID; ++n) { - Graph3::Node m=g3.addNode(); - gwn.set(n, m); - g3n.set(m, n); - } - - typedef NewEdgeSetGraphWrapper GWW; -// { -// checkConcept(); -// } - - GWW gww(gw, g3, gwn, g3n); - - for (Graph1::NodeIt n(g1); n!=INVALID; ++n) { - g3.addEdge(gwn[sw], gwn[GW::Node(n,INVALID,false)]); - } - -// for (Graph1::NodeIt n(g1); n!=INVALID; ++n) { -// gww.addEdge(sw, GW::Node(n,INVALID,false)); -// } - - cout << "new edges" << endl; - printGraph(g3); - - cout << "new edges in the new graph" << endl; - printGraph(gww); - - typedef AugmentingGraphWrapper GWWW; -// { -// checkConcept(); -// } - GWWW gwww(gw, gww); - - cout << "new edges merged into the original graph" << endl; - printGraph(gwww); - - } - -}