状压(集合幂级数)数符合某些性质的导出子图/边子图数。

APIO2025 记录

容斥技巧:图计数

集合幂级数基础运算

限制分为无向图的连通性和有向图的强连通性,以及双连通性。

要做的比 好,需要集合幂级数的运算。

连通性

可以容斥为总方案数减枚举一个包含最小点的子集不连通的方案数。复杂度

abc236h

“已知要求连通的信息推及不要求连通的信息” 及其逆过程。

考虑 exp/ln 的组合意义:设 表示导出子图 的权值, 表示 的所有划分方案的权值和,划分方案的权值为划分出的子集的权值积。有

数连通子图

计数边子图使得是连通图。

的导出子图的边子图有多少是连通图,。则 恰好考虑 的导出子图的边子图个一次, 反推

数连通二分子图

计数边子图使得连通且是二分图。

枚举左部点 ,右部点 ,左右任意连。

忽略连通限制,原图的一个二分子图被计入 次, 为连通块数。所以 exp 每拼上一个子图都要乘

的答案乘 ,子集卷积求

数杏仁图

给定杏仁的两极 ,对于每个 计数边子图使得是杏仁且

把从 出发的所有链状压求出来 。把这些链挖掉两极 exp 起来。询问时枚举 所在的链和 剩下的任意组合的方案相乘。

Q6954

计数边子图使得连通且所有环的交非空。

两个环交于大于两个点会形成新的大环,这三个环至多交于 点。

所以合法的状态有:树、基环树、 个点使得删去后图中无环。容斥掉树上删点也无环:

子集的生成树数可以矩阵树 。也可以依次对于每个 ,算 的方案数,即把 的子集乘上与 的连边数 exp 起来,复杂度

基环树是枚举环上的点集 ,先状压出环上排列的方案数,再把环缩成一个点做生成树计数。每个基环树有一个与环大小相关的容斥系数。复杂度

删一个点图中无环,枚举删 ,剩下的子集内部有生成树数,还有至少一条连向 ,exp 起来。复杂度

删两个点图中无环,枚举删 ,每个剩下的子集选至多一条边与 连,不能没有,exp 起来,复杂度 。还有一种数重的情况,变成 不连通,即两个树。

可以用 的集合幂级数代替 的枚举子集。

图 k 匹配

加速到

强连通性

缩点后为 DAG,对 零度点 容斥,枚举零度点集合,容斥系数

有一些有意思的事情:比如可达性的容斥,把零度点当成 bfs 的最浅层点,系数也是 ,但是显然有更简单的做法。

无向图重定向为 DAG 的方案数

可以看成从空集开始每次加上一个集合(有序),集合带有 的系数。对于集合幂级数 ,等价于求 在全集的系数。求逆。

重塑时光

表示 分为 个非空段形成 DAG 的方案, 分为 个非空段段间没有边的方案数。容斥系数同 DAG 计数,可以做到 。设 ,拉插之后算系数,复杂度

主旋律

数多少个边子集,删去之后图强连通。

表示强连通的方案, 表示若干个 度点拼起来的方案,交替转移。

先算 ,再算 ,再给 加上

岁月

数多少个边子集,删去之后图的最小外向生成树权值等于图的最小生成树。

here

对于边权全相同的边,就是 主旋律。

按边权从小到大加入边,旧图的根集当作点,魔改一下。