Reconstruct the minimal path cost from the delta-stepping algorithm?
The algorithm that you're implementing is based on the Dijkstra Algorithm, so we can use the same idea to get the path, that is, keep the predecesor data each time you relax the edges (see pred data structure below). Actually, in the same paper, they state where you have to look at in the following method.  



However, we need the information of the vertex we are using in the relaxation method, as you know we are comparing these two values, $tent[w]$ vs $tent[v] + Cost[v,w]$. So if after all $tent[v] + Cost[v,w]$ is less than $tent[w]$, we need keep $v$ to say we are going to use the edge $(v,w)$.

Then I suggest you to introduce $v$ as follows:

Replace $Req$ for this definition, $$ Req = \{(w, tent(v) + c(v,w), v)\ :\ v\in B[i] \text{ and  } (v,w) \in light[v]\}. $$

Add a third argument to the method relax:

 relax(w,d,v)
    if d &lt; tent[w]:
        pred[w] = v
        ...


And fix all for each with $(w,d,v)\in Req$ and the other.

To retrieve the path from $s$ to $w$, do something like:

for v in V: pred[v] = INF
...
def findpath(w):
  v = w 
  path = []
  while pred[v] is not INF:
     path.append(v)
     v = pred[v]
  path.reverse()
  return path