Dual algorithms for the shortest path tree problem