Check out my first novel, midnight's simulacra!
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.