priority_queue to represent a
min heap and the map to represent graphs,
implement Dijkstra's shortest path algorithm and test it
on the directed graph given in the text
(reproduced here for convenience).
Sample output (should match what's in the text):
Dijkstra's from v1:
to v1 costs 0 via
to v2 costs 2 via v1
to v3 costs 3 via v4
to v4 costs 1 via v1
to v5 costs 3 via v4
to v6 costs 6 via v7
to v7 costs 5 via v4
priority_queue and map
to represent graphs, implement Prim's minimum spanning tree
algorithm and test it on the graph given in the
text (reproduced here for convenience, note the different
weight of edge (v4,v5)).
Sample output (should match what's in the text):
Prim's from v1:
to v1 costs 0 via
to v2 costs 2 via v1
to v3 costs 2 via v4
to v4 costs 1 via v1
to v5 costs 6 via v7
to v6 costs 1 via v7
to v7 costs 4 via v4
node_t class containing
a string id with an int cost
as well as a string predecessor. Make
sure you have operator<,
operator>, and operator==
defined so that you can place verteces on the priority queue.
map<string,map<string,int> > graph;
priority_queue holds graph verteces ordered
by increasing cost—use a min heap instead of the
default max heap by declaring
priority_queue with the
greater<> comparator, e.g.,
priority_queue<node_t,std::vector<node_t>,greater<node_t> > queue;
map<string,int> costs;
map<string,string> paths;
tar.gz
archive of your lab##/ directory, including:
README file containing
Makefile
.h headers and .cpp source)
make clean before tar)
sendlab notes