题意:
二分图,左边n个点,右边m个点
左边每个点都与右边某一点不相连
令S表示选择左边点的状态集合,g(S)表示选择里面的点,且里面的点与右边某一点连接,且右边的点最多只能跟一个左边点相连,总共的方案数
求
∑2n−1s=1S∗G(S)
∑
s
=
1
2
n
−
1
S
∗
G
(
S
)
想法:
比赛看懂题意,想到容斥,不会做
对于每个
S
S
,枚举,然后令
S−S1
S
−
S
1
的点与右边剩余点随意连边,取得方案数
最后利用容斥原理即可
至于如何枚举,长这样
时间复杂度
3n
3
n
fo(i,1,cm[n]-1){
j=i;
while (j>-1){
j&=i;
if (bz[j]){
s=f[sum[j]+1][sum[i]];
if((sum[j]&1))
ans[i]=(ans[i]-s+mo)%mo;
else ans[i]=(ans[i]+s)%mo;
}
j--;
}
}