This is a C++ implementation of a graph, Dijkstra's shortest path algorithm using the STL's priority_queue container adapter to implement a priority queue which allows us to change the priority of the items in the queue, and a Monte Carlo simulation as a way of testing these.

More detailed description and road map, plus license:
   license
   README

An abstract base class for a graph G = (V, E):
   Graph.h

A concrete implementation of a Graph that uses an adjacency list (rather than an adjacency matrix):
   GraphImpl1.h
   GraphImpl1.cpp

The rest:
   Makefile
   main.cpp - the Monte Carlo simulation is here.
   PriorityQueue.hpp
   Dijkstra.cpp
   Dijkstra.h