传送门
m = 0 m=0 m=0的情况就是一个补集转化,用个 O ( n 2 k 2 ) O(n^2k^2) O(n2k2)的 d p dp dp即可。
m = 1 , 2 m=1,2 m=1,2的情况分类讨论即可。
代码:
#include<bits/stdc++.h>
#define ri register int
using namespace std;
const int N=105;
typedef long long ll;
const int mod=1e9+7,inv2=(mod+1)>>1;
class KingdomAndCities{
public:
inline int add(const int&a,const int&b){
return a+b>=mod?a+b-mod:a+b;}
inline int dec(const int&a,const int&b){
return a>=b?a-b:a-b+mod;}
inline int mul(const int&a,const int&b){
return (ll)a*b%mod;}
inline void Add(int&a,const int&b){
a=a+b>=mod?a+b-mod:a+b