SPF algorithm