Run Bellman-Ford for k + 1 iterations. Copy the distance array each round to respect the stop limit.
function findCheapestPrice(n, flights, src, dst, k):
dist = array of size n, filled with infinity
dist[src] = 0
for i from 0 to k:
prev = copy of dist
for [u, v, price] in flights:
if prev[u] + price < dist[v]:
dist[v] = prev[u] + price
if dist[dst] == infinity:
return -1
return dist[dst]
time, space.