前言
米奇妙妙题, 确实很好
算法
那么接下来就自己推吧
首先, 一个做法是对于 \((x, y)\) , 将 \(x \to y\) 连边, 这样问题转化成:
如果存在 \(x \to y\) 和 \(y \to z\) 那么连 \(x \to z\) , 求最终会有多少条边
这个形式好像就更符合中国宝宝的体质, 那么我们考虑解决
猜测需要在模 \(3\) 意义下建图, 那么以下的阐述都以一个连通块来处理, 最终的答案合并一下就可以
将原图染色, 那么就可以造出一个三集合 \(X, Y, Z\) , 其中每个集合的点都向另一个集合的至少一个点连边, 这种情况下, 感性理解, 最后 \(X\) 每个点向 \(Y\) 每个点连边, \(Y\) 每个点向 \(X\) 每个点连边, \(Z\) 每个点向 \(X\) 每个点连边, 集合内部没有边, 那么答案即为 \(\lvert X \rvert \times \lvert Y \rvert + \lvert X \rvert \times \lvert Z \rvert + \lvert Y \rvert \times \lvert Z \rvert\)
但是当三集合不存在, 也就是原图必然出现了自环或二元环, 怎么办?
这种情况下, 最后连满了还有自环, 一共有点数的平方的答案
还有一种情况, 集合只染成了两个, 那没得更新, 直接处理即可
代码
这个题到目前, 没有找到一种思路自然的做法, 那我就不写代码了, 反正也做不出来
其实是懒
那就后补
总结
对于这种特殊类型的题, 在模数意义下建图是一个常用的 \(\rm{trick}\) , 分类讨论即可
标签:每个,rvert,AGC006F,times,lvert,集合,点连边,Blackout From: https://www.cnblogs.com/YzaCsp/p/18587083