枚举一条边 \((u,v)\) ,选择度数较小的点 \(v\) 暴力扫所有出边即可。一次复杂度 \(\mathcal O(out_v)\)
可能需要一个 Hash。
这样做复杂度为 \(\mathcal O(\sum_{i=1}^m out_v)\)。
下面说明这个复杂度是 \(\mathcal O(m\sqrt m)\) 的。
将 \(m\) 个 \(out_v\) 分为两类:
- \(out_v\leq\sqrt m\),这一部分的和为 \(\mathcal O(m\sqrt m)\)。
- \(out_v>\sqrt m\),考虑到 \(out_u>\sqrt m\),则 \(u\) 最多有 \(\sqrt m\) 个,即每个 \(out_v\) 最多出现 \(\mathcal O(\sqrt m)\) 次,则这一部分的和为 \(\mathcal O(\sqrt m\cdot \sum_{i=1}^n \left[out_i>\sqrt m\right] \cdot out_i)=\mathcal O(m\sqrt m)\)
所以复杂度是 \(\mathcal O(m\sqrt m)\) 的。
标签:cdot,复杂度,sqrt,计数,mathcal,三元,sum,out From: https://www.cnblogs.com/pref-ctrl27/p/17020350.html