A method implemented by a network element to improve efficiency of loop free alternative, LFA, path computation by caching data from a shortest path first calculation for use in the LFA path calculation, the shortest path first calculation to determine a shortest path from a source vertex to each vertex in a network topology graph representing the network in which the network element operates, where an endpoint for each shortest path is a shortest path vertex, where each shortest path determined by the shortest path first calculation is stored, the method comprising the steps of: generating a candidate path set with each candidate path being a stored shortest path from the source vertex to the shortest path vertex joined with an edge originating at the shortest path vertex of the stored shortest path; prioritizing each candidate path in a priority queue using a distance of each candidate path; a) selecting and removing a next candidate path from the priority queue; b) checking whether the candidate path is a loop free alternative path using stored data from the shortest path first calculation; c) discarding the candidate path where the candidate path is not a loop free alternative path; d) where the candidate path meets applicable conditions, selecting and storing the candidate path as the LFA path, storing the first hop edge along the LFA path, and storing a distance of the LFA path; checking whether the priority queue is empty; checking whether all shortest path vertices in the network topology have LFA paths; ending the LFA path calculation when the priority queue is empty or all shortest path vertices have LFA paths; and repeating steps a) to d) when the priority queue is not empty. generating a candidate path set with each candidate path being a stored shortest path from the source vertex to the shortest path vertex joined with an edge originating at the shortest path vertex of the stored shortest path; prioritizing each candidate path in a priority queue using a distance of each candidate path; a) selecting and removing a next candidate path from the priority queue; b) checking whether the candidate path is a loop free alternative path using stored data from the shortest path first calculation; c) discarding the candidate path where the candidate path is not a loop free alternative path; d) where the candidate path meets applicable conditions, selecting and storing the candidate path as the LFA path, storing the first hop edge along the LFA path, and storing a distance of the LFA path; a) selecting and removing a next candidate path from the priority queue; b) checking whether the candidate path is a loop free alternative path using stored data from the shortest path first calculation; c) discarding the candidate path where the candidate path is not a loop free alternative path; d) where the candidate path meets applicable conditions, selecting and storing the candidate path as the LFA path, storing the first hop edge along the LFA path, and storing a distance of the LFA path; checking whether the priority queue is empty; checking whether all shortest path vertices in the network topology have LFA paths; ending the LFA path calculation when the priority queue is empty or all shortest path vertices have LFA paths; and repeating steps a) to d) when the priority queue is not empty.