find shortest 2 or 3 edges long cycles in a directed graph
===

I have a simple problem, but it's likely simpler ones have complicated solutions! I have a directed weighted graph, edge weights may be negative (weight>-A where A is known beforehand). I want to find the shortest (minimum) cycle with 2 or 3 edges. I think I can add +A to all edges and use algorithms like Floyd-walshall to find all shortest path between any pair of vertices. Is this solution correct? If yes, how can I scale the approach for longer cycles?

Regards