Given a weighted graph and a node X, find the shortest path from X to each node in the graph.
Each entry on READY is a triple:
<Node Name, Path, Path Length>
READY is a priority queue. Path Length is the priority. The entry with the smallest Path Length is the next one removed.
We want the shortest path to N, not the first one. N can't be marked REACHED until we are sure we have the shortest path, i.e. when entry for N is removed from READY.
Instead of REACHED, we use PROCESSED and UNPROCESSED.
When adding a triple to READY, if there is already one for the same node, we keep the one with the shortest Path Length.