三元环计数

\(\mathcal Link\)

枚举一条边 \((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)\) 的。

posted @ 2023-01-02 18:44  pref_ctrl27  阅读(9)  评论(0编辑  收藏  举报