Compilation instructions:
- stack ghc -- -O2 -threaded -rtsopts -eventlog final.hs

Running instructions:
- time ./final +RTS -N4 -ls 

Tests for correctness
- Run the following

$ stack ghci 

Prelude> :set -Wall

Prelude> :l final.hs
[1 of 1] Compiling Main             ( final.hs, interpreted )
Ok, one module loaded.

*Main> dijkstra generateTestGraph 4
fromList [(0,Infinity),(1,2.0),(2,Infinity),(3,3.0),(4,0.0),(5,1.0),(6,4.0)]

*Main> dijkstra generateTestGraphTwo 7
fromList [(0,2.0),(1,1.0),(2,1.0),(3,2.0),(4,3.0),(5,1.0),(6,2.0),(7,0.0),(8,3.0),(9,3.0)]

Test for runtime 
- Run the following where n is an integer from 1-200 inclusive (recommended)

$ time ./final n +RTS -N1 -ls
$ time ./final n +RTS -N4 -ls
