Loading

[ABC306Ex] Balance Scale 题解

首先先考虑只有 $<$ 和 $>$。

分析一下可以发现,只有当形成 $<$ 或 $>$ 的环时,该图是不合法的,所以题目可以转化为对每条无向边改为有向边,然后对 $\text{DAG}$ 计数。

因为 $n\le17$,所以我们考虑状压 $\text{dp}$ 。

我们考虑 $\text{DAG}$ 的构成:拓补时,入度为 $0$ 的点会被删除。

所以我们可以枚举入度为 $0$ 的点的点集,由于两者连接的边可以换方向,我们只用考虑枚举独立集即可。

很显然这会算重,考虑容斥。

我们分析一下算重的原因:一个独立集的子集必然为独立集。

所以任何一个大小大于 $1$ 的自己都会算重,若令独立集的点数为 $cnt$,则系数为 $(-1)^{ cnt+1}$。

然后我们考虑 $=$ 的处理。

其实它就相当于合并两个点。

我们如法炮制,在枚举每个独立集时,我们可以直接将任意两个有连边的两点合并。

这就等价于记录连通分量的个数。

同理容斥,若令子图的联通分量数为 $comp$,同理容斥系数为 $(-1)^{ comp+1}$。

这样就做完了。

代码

posted @ 2023-07-02 14:43  hsaht2426  阅读(25)  评论(0)    收藏  举报  来源