A branch-and-bound algorithm for the time-dependent travelling salesman problem