给一张\(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\)所找到
时间复杂度,最高为\(O\left(m\sqrt{m}\right)\)
如有哪里讲得不是很明白或是有错误,欢迎指正
如您喜欢的话不妨点个赞收藏一下吧
原文:https://www.cnblogs.com/Morning-Glory/p/11329490.html