38typedef std::map<std::string, Distances>
Cities;
43 return lhs.first <
rhs.first;
49 return lhs.first >
rhs.first;
54shortestDistance (
Cities &city_map,
55 const std::string &start_city,
62 std::allocator<DistancePair> >,
63 std::greater<DistancePair> > que;
67 while (! que.empty ()) {
71 std::string city = que.top ().second;
75 if (0 ==
dist.count (city))
82 Distances::const_iterator
start = cities.begin ();
83 Distances::const_iterator stop = cities.end ();
95 std::cout <<
"Graph example program "
96 <<
" - find shortest path in a directed graph."
99 static const char pendleton[] =
"Pendleton";
100 static const char pensacola[] =
"Pensacola";
101 static const char peoria[] =
"Peoria";
102 static const char phoenix[] =
"Phoenix";
103 static const char pierre[] =
"Pierre";
104 static const char pittsburgh[] =
"Pittsburgh";
105 static const char princeton[] =
"Princeton";
106 static const char pueblo[] =
"Pueblo";
110 cityMap[pendleton][phoenix] = 4;
111 cityMap[pendleton][pueblo] = 8;
112 cityMap[pensacola][phoenix] = 5;
113 cityMap[peoria][pittsburgh] = 5;
114 cityMap[peoria][pueblo] = 3;
115 cityMap[phoenix][peoria] = 4;
116 cityMap[phoenix][pittsburgh] = 10;
117 cityMap[phoenix][pueblo] = 3;
118 cityMap[pierre][pendleton] = 2;
119 cityMap[pittsburgh][pensacola] = 4;
120 cityMap[princeton][pittsburgh] = 2;
121 cityMap[pueblo][pierre] = 3;
125 shortestDistance (cityMap, pierre,
dist);
126 Distances::iterator where;
128 std::cout <<
"Find the shortest path from : "
131 for (where =
dist.begin (); where !=
dist.end (); ++where)
132 std::cout <<
" Distance to: " << (*where).first <<
":"
133 << (*where).second <<
'\n';
135 std::cout <<
"End of graph example program" <<
'\n';
std::map< std::string, Distances > Cities
bool operator<(const DistancePair &lhs, const DistancePair &rhs)
std::map< std::string, int > Distances
bool operator>(const DistancePair &lhs, const DistancePair &rhs)
std::pair< unsigned, std::string > DistancePair