Bellman-Ford and zero-distance cycle
Here's how you can detect whether a weighted graph $G$ contains a zero-length cycle, assuming it does not contain any negative cycle.


Run Bellman-Ford on it to compute the distance $d(v)$ from the source to $v$, for each vertex $v$.
Color each edge $(v,w)$ red if $d(v) + \text{wt}(v,w) = d(w)$.
Form a new unweighted, directed graph $G'$ containing just the red edges from $G$.  Check whether $G'$ has any cycles, using a standard algorithm (e.g., depth-first search).  This can be done in linear time.


I'll leave it to you as an exercise to prove that the original graph $G$ contains a zero-length cycle if and only if the new graph $G'$ has a cycle.