CF1383C
观察一下题目的性质,他说了同一种颜色可以有若干个一起变色,那么我们考虑将同一种颜色看成相同的东西。
考虑对于其建图,也就是如果 A i A_i Ai 变成 B i B_i Bi 就建立 A i → B i A_i \to B_i Ai→Bi 的边。
然后本质上就是叫我们重新建立一张图满足 A i A_i Ai 和 B i B_i Bi 联通,边数最少的图。
本质上每一次变换都是需要一次操作。
但是不仅是如此,如果说 u → v u \to v u→v 的路径是存在的,必须满足其路径上的边的变化时间是递增的。那么就是让我们对于边进行标号,然后满足图上任意路径都是递增的。
我们发现如果任意两个点都能互相到达,边数最少的就是一个环加上一条链。也就是这样的情况。
这样我们需要消耗 2 n − 2 2n - 2 2n−2 条边。
但是我们可以更优,也就是考虑对于这个图,找到一个最大的 D A G DAG DAG 进行向链一样连边,然后后面的点进行这样的操作。
这样子肯定是最优的。
然后我们考虑通过 D p Dp Dp 计算这个答案,发现直接计算选了 S S S 中的点,最大 D A G DAG DAG 的大小不好算。那么我们就找下面链的最少点个数。
我们对于每一个弱连通块分别考虑,设 f ( S ) f(S)