如果存在 b−>ab->ab−>a 和 c−>ac->ac−>a,那么就在并查集上合并 b,cb,cb,c,因为跑了一次可能不够,所以直接跑 nnn 次(每次至少合并一个点,如果没有点合并那么就直接计算答案).
这样理论复杂度应该是 O(nm)\mathcal{O}(nm)O(nm),但是过了.