alpar@174: /* -*- C++ -*- alpar@174: * alpar@174: * This file is a part of LEMON, a generic C++ optimization library alpar@174: * alpar@174: * Copyright (C) 2003-2006 alpar@174: * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport alpar@174: * (Egervary Research Group on Combinatorial Optimization, EGRES). alpar@174: * alpar@174: * Permission to use, modify and distribute this software is granted alpar@174: * provided that this copyright notice appears in all copies. For alpar@174: * precise terms see the accompanying LICENSE file. alpar@174: * alpar@174: * This software is provided "AS IS" with no warranty of any kind, alpar@174: * express or implied, and with no claim as to its suitability for any alpar@174: * purpose. alpar@174: * alpar@174: */ alpar@174: hegyi@194: #include hegyi@194: hegyi@194: #include hegyi@194: #include hegyi@194: #include hegyi@106: #include hegyi@106: hegyi@109: enum {INPUT, OUTPUT, MAP_NUM}; hegyi@109: hegyi@108: KruskalBox::KruskalBox(std::vector t):AlgoBox() hegyi@106: { hegyi@108: init(t); hegyi@106: } hegyi@106: hegyi@106: void KruskalBox::run() hegyi@106: { hegyi@114: if( ladanyi@201: tabcbt.get_active_text()!="" && ladanyi@201: (edgemapcbts[INPUT])->get_active_text()!="" && ladanyi@201: (edgemapcbts[OUTPUT])->get_active_text()!="" ladanyi@201: ) ladanyi@201: { ladanyi@201: ladanyi@201: const Graph &g=mapstorage->getGraph(); ladanyi@201: std::string input_map_name = edgemapcbts[INPUT]->get_active_text(); ladanyi@201: Graph::EdgeMap outputmap(g); ladanyi@201: const MapStorage::NumericEdgeMap& inputmap= ladanyi@201: mapstorage->getNumericEdgeMap(input_map_name); ladanyi@201: double res=kruskal(g, inputmap, outputmap); ladanyi@201: ladanyi@201: for (EdgeIt i(g); i!=INVALID; ++i) hegyi@114: { ladanyi@201: if(outputmap[i]) ladanyi@201: { ladanyi@201: mapstorage->set(edgemapcbts[OUTPUT]->get_active_text(), i, 1.0); ladanyi@201: } ladanyi@201: else ladanyi@201: { ladanyi@201: mapstorage->set(edgemapcbts[OUTPUT]->get_active_text(), i, 0.0); ladanyi@201: } ladanyi@201: } hegyi@109: ladanyi@201: std::ostringstream o; ladanyi@201: o << "Result: " << res; ladanyi@201: resultlabel.set_text(o.str()); hegyi@109: ladanyi@201: mapstorage->mapChanged(true, (edgemapcbts[OUTPUT])->get_active_text()); ladanyi@201: // mapstorage->changeActiveMap(true, E_COLOR, ladanyi@201: // (edgemapcbts[OUTPUT])->get_active_text()); ladanyi@201: // mapstorage->changeActiveMap(true, E_TEXT, ladanyi@201: // (edgemapcbts[INPUT])->get_active_text()); hegyi@111: ladanyi@201: } hegyi@106: } hegyi@106: hegyi@106: void KruskalBox::build_box() hegyi@106: { hegyi@114: std::vector empty_vector; hegyi@114: ladanyi@201: addMapSelector("Edgecosts: ", true, NUM); ladanyi@201: addMapSelector("Edges of tree here: ", true, NUM); hegyi@109: hegyi@109: resultlabel.set_text("Result: algorithm is not run yet."); hegyi@109: pack_start(resultlabel); hegyi@106: }