环计数问题

1. 三元环计数

就是在一个图上找出 (u,v,w) 满足 (u,v),(v,w),(w,u) 都有边的个数。

我们先给每个边定向,规定有度数小的边指向度数大的边,相等则从小编号指向大编号。可以证明这是一个 DAG。

假设有环,则要么度数一直增,要么度数相等,但编号一定不等,矛盾。

然后直接枚举 u 所连的 v,再在 v 指向的点枚举 w,判断一下即可。

复杂度是 O(mm),比较神奇。

对于每一对 (v,w)u 的数量都不超过 v 的入度 d(v)
d(v)m,则复杂度为 O(nm)
d(v)>m,则 d(w)d(v)>m,这样的存在最多只有 m 个,复杂度 O(mm)

其实很类似根号分治。

I P1989 无向图三元环计数

板子。

代码

这个性质好像很牛,但不知到为什么。

posted @   oXUo  阅读(37)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
网站统计
点击右上角即可分享
微信分享提示