【luogu P1989】无向图三元环计数(图论)(分类讨论)
无向图三元环计数
题目链接:luogu P1989
题目大意
给你一个无向图,问你有多少个三元组 (a,b,c),使得 ab,bc,ac 之间都有边。
我们把不同排列得到的三元组看做一个。
思路
首先不难想到一些暴力的做法:
直接枚举三个点 ,枚举两条边 ,枚举点和相邻的边 。
然而都过不了。
我们考虑进行一个优化。
考虑我们会重复计算一些,我们考虑把边弄成有向的(按照一定的方法)。
我们考虑把点排优先级,从优先级大的连向优先级小的。
然后我们可以把度数大的的优先级更大,如果入度相同就看点编号。
那这样搞之后,我们考虑枚举一开始的点,然后标记处它能走到的点,然后按边扩展两步,如果扩展到的点一开始的点都能到,那就形成了一个三元环。
然后这么搞就可以过。
然后说一说如何判断走到的点和一开始的点是否有边。
其实你就拿个数组记录一下那些点是能走到的,然后枚举枚举新的开始的点的时候更新一下就好了。
那为什么呢?
我们分情况讨论:(设新图入度为 ,出度为 )
- 出度 ,那所有点就是 。( 之和只有 )
- 初度 ,那由于边数是 ,那这样的点不会超过 个,那复杂度总和还是 。
所以复杂度就变成了 。
代码
__EOF__

本文作者:あおいSakura
本文链接:https://www.cnblogs.com/Sakura-TJH/p/luogu_P1989.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/Sakura-TJH/p/luogu_P1989.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现