How to Find Long Paths Efficiently