首先 $m\ge n+2\sqrt{n}$ 必然有解,证明见此。
接下来只考虑 $m< n+2\sqrt{n}$ 的情况。
先删去一度点、缩二度点(显然对环的个数和环长没有影响)。 这样图的大小就是 $|V|=O(\sqrt{n})$ 的。
之后枚举起点,暴力找环即可,注意每尝试走一步就判断如果走之后已经无法回到起点,就不要再尝试走这一步。
复杂度分析:由于减枝每次找必然能找到一个环。找到 $O(n)$ 个环之后一定有两个环长度相同,就结束了。每找到一个环的复杂度是 $O(环长*|V|)$ 的(每走一步都要 $O(|V|)$ 判断是否能回到起点)。总复杂度为 $O(n \times |V| \times |V|)=O(n^2)$。