三元环计数

Posted morning-glory

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三元环计数相关的知识,希望对你有一定的参考价值。

也许更好的阅读体验

问题描述

给一张\(n\)个点,\(m\)条边的简单无向图,求解有多少个三元环
三元环:一个三元组\(\left(i,j,k\right)\)表示三个点,要求存在边\(\left(i,j\right),\left(i,k\right),\left(j,k\right)\)


解决方法

定义点的大小

我们先把每个点\(i\)定义一个双关键字\(\left(deg_i,id_i\right)\),其中\(deg_i,id_i\)分别表示\(i\)点的度数与编号,这样每个点就有了严格的大小关系

转为有向图

然后我们将这张无向图转变为有向图:把所有的边\(\left(i,j\right)\)改为由关键字大的点向关键字小的点连边,这样我们就可以得到一张有向无环图

找环

找环分为三步

  • 枚举一个点\(i\),将所有出边所连接的点标记为\(i\)
  • 枚举一个由\(i\)连出的点\(j\)
  • 枚举所有由\(j\)连出的点\(k\),若\(k\)有标记了且该标记为\(i\),就表明找到了一个三元环

这样做就保证了每个环只会被\(i\)所找到
时间复杂度,最高为\(O\left(m\sqrtm\right)\)

如有哪里讲得不是很明白或是有错误,欢迎指正
如您喜欢的话不妨点个赞收藏一下吧

以上是关于三元环计数的主要内容,如果未能解决你的问题,请参考以下文章

HDU 6184 Counting Stars 经典三元环计数

黑科技之三元环讲解

洛谷 - P1989 无向图三元环计数(思维建图)

P4619 [SDOI2018]旧试题(莫比乌斯反演,建图优化三重枚举,三元环计数,神仙好题,超级清晰易懂)

牛客挑战赛51 E NIT的gcd(欧拉反演,建图优化,三元环计数)

HDU - 6184 Counting Stars(思维+三元环)