#include #include #include #include #include using namespace std; using namespace lemon; int main() { typedef ListGraph::Node Node; typedef ListGraph::Edge Edge; typedef ListGraph::NodeIt NodeIt; typedef ListGraph::EdgeIt EdgeIt; ListGraph G; Node s=G.addNode(); Node v1=G.addNode(); Node v2=G.addNode(); Node v3=G.addNode(); Node v4=G.addNode(); Node t=G.addNode(); Edge e1 = G.addEdge(s, v1); Edge e2 = G.addEdge(s, v2); Edge e3 = G.addEdge(v1, v2); Edge e4 = G.addEdge(v2, v1); Edge e5 = G.addEdge(v1, v3); Edge e6 = G.addEdge(v3, v2); Edge e7 = G.addEdge(v2, v4); Edge e8 = G.addEdge(v4, v3); Edge e9 = G.addEdge(v3, t); Edge e10 = G.addEdge(v4, t); typedef ListGraph::EdgeMap ECostMap; typedef ListGraph::EdgeMap EBoolMap; ECostMap edge_cost_map(G, 2); EBoolMap tree_map(G); //Test with const map. std::cout << "The weight of the minimum spanning tree is " << kruskalEdgeMap(G, ConstMap(2), tree_map)< tree_edge_vec; //Test with a edge map and inserter. check(kruskalEdgeMap_IteratorOut(G, edge_cost_map, back_inserter(tree_edge_vec)) ==-31, "Total cost should be -31."); tree_edge_vec.clear(); //The above test could also be coded like this: check(kruskal(G, makeKruskalMapInput(G, edge_cost_map), makeKruskalSequenceOutput(back_inserter(tree_edge_vec))) ==-31, "Total cost should be -31."); check(tree_edge_vec.size()==5,"The tree should have 5 edges."); check(tree_edge_vec[0]==e1 && tree_edge_vec[1]==e2 && tree_edge_vec[2]==e5 && tree_edge_vec[3]==e7 && tree_edge_vec[4]==e9, "Wrong tree."); */ return 0; }