Johnson's Algorithm