how to find all negative weight cycles(elementary circuit) in a strongly connected directed graph?
My current strategy is:

first enumerate all elementary cycles. I use the hawick algorithm which is already implemented in the c++ boost library.
sum all the weights of edges in each cycle and then check if the sum is negative.