#include <iostream> #include <bpp/graph_problem/shortest_path.hpp>
using namespace bpp::graphProblemShortestPath;
class arc_data_t { public: //----------------------------------------------------Data tyReal distance; tyReal speed; //-------------------------------------Default Constructor arc_data_t(void) : distance(0.0),speed(0.0) {} //---------------------------------Constructor From Stream arc_data_t(clInStream & stream_,tyBoolean) { clString separator; stream_ >> distance >> separator >> speed; } //--------------------------------------Output Into Stream void out(clOutStream & stream_,tyBoolean) const { stream_ << distance << " , " << speed; } //--------------------------------------------------Length tyReal length(void) { return distance/speed; } };
class node_data_t { public: //----------------------------------------------------Data clString name; //-------------------------------------Default Constructor node_data_t(void) : name("") {} //---------------------------------Constructor From Stream node_data_t(clInStream & stream_,tyBoolean) { stream_ >> name; } //--------------------------------------Output Into Stream void out(clOutStream & stream_,tyBoolean) const { stream_ << name; } };
typedef clDijkstraAlgo<arc_data_t,node_data_t> algo_t; typedef clArc<arc_data_t,node_data_t> arc_t; typedef clGraph<arc_data_t,node_data_t> network_t; typedef clNode<arc_data_t,node_data_t> node_t; typedef std::vector<arc_t *> path_t;
#include <bpp/display/console.hpp>
int main(void) { // B++ Library Initialization // bpp::displayConsole::clDisplay display; bpp::standard::openLibrary(display);
try { // Local Variables // clInFile input; network_t network; clOutFile output; path_t path;
// Input Reading // input.open("network.dat",ios::in); input >> network; input.close();
// Shortest Path Resolution // algo_t().run(network,0,6,path);
// Output Writing // output.open("path.dat",ios::out); output << "Path = " << path; output.close(); }
catch (...) { std::cout << "An error occurred !" << std::endl; }
// B++ Library Termination // bpp::standard::closeLibrary();
exit(0); } |
|