
Dijkstra's algorithm works for undirected graphs as well (you can reduce it to the undirected case by just using the same edge cost in both directions). In fact, that's how it was originally stated, as you can see by the n*(n1)/2 upper bound on the number of edges mentioned at the end of the first page.
