If node improved in the -th iteration, it is affected by a negative cycle, but it might not be inside the cycle itself. It could be a node reachable from the cycle. Walk back steps from using parent pointers. After steps, you are guaranteed to be at a node inside the cycle. Why?
Because edges in a graph with nodes must include a repeated node. From there, follow parents and record nodes until you see a repeated node. That gives you the cycle. The first repeated node is where the cycle begins and ends.