Suurballe's Algorithm

From dankwiki

An algorithm to find two paths in a nonnegatively-weighted directed graph, such that the two paths connect the same vertices, are otherwise disjoint, and minimize path lenghts. There exist obvious applications to routing survivability and network flow. The algorithm involves running Dijkstra twice.