无向图三元环计数
这个做法的思想还是很巧妙的,首先我们考虑枚举,暴力的方法就是枚举三个点O(n3)O(n^3)O(n3),枚举一个点然后枚举出边,然后再枚举出点的出边,然后考虑这个做法的复杂度。对于每条边分析,它会对复杂度的贡献就是指向的点的度数,所以总复杂度就是∑i=1mdegpi\sum_{i=1}^mdeg_{p_i}∑i=1mdegpi,但是如果我们能够把无向图变为有向图就可以优化复杂度,如果这个有向图没有环,那么所有无向图中的环对应了有向图中的<u,v><u,w><v,w>,然后考虑构造一种方法是的复杂度尽量优秀,那么考虑让度数小的点向度数大的点连边,这样构造出来的图有非常优美的性质,满足所有点的出度都是O(m)O(\sqrt{m})O(m)
具体证明:
如果这个点在原图上度数小于m\sqrt{m}m那么新图上出度一定小于m\sqrt{m}m。
如果这个点在原图上度数大于m\sqrt{m}m那么新图上它只会指向度数大于等于m\sqrt{m}m的点,因为一个图总度数是O(m)O(m)O(m),所以度数大于等于m\sqrt{m}m的点只有O(m)O(\sqrt{m})O(m)个,所以这些点的出度也是O(m)O(\sqrt{m})O(m)的。