I am looking for the most efficient algorithm that can solve this problem: 
Given a directed graph with real-valued edge weights, find a set of directed cycles (no two cycles can share a vertex) that have the maximum sum of weights. 



Finding the max-value set of cycles in a weighted digraph
This is known as the *maximum weight cycle packing* problem. See, for example, [this paper](https://pdfs.semanticscholar.org/3017/ac96269be829de49761d0d67fc8570b8d640.pdf). The *kidney exchange* and *barter exhange* problems are also relevant.


