#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=998244353,N=18;
ll a[N],s[1<<N],p[1<<N],r[1<<N],d[1<<N],f[1<<N];
int main() {
ll n,m; cin >>n>>m; s[0]=1; f[0]=1;
for(ll i=1;i<=m;i++){
ll u,v; cin >>u>>v;
u--; v--; a[u]|=(1<<v); a[v]|=(1<<u);
}for(ll i=0;i<n;i++) d[1<<i]=i;
for(ll i=0;i<(1<<n);i++){
p[i]=p[i>>1]+(i&1); r[i]=(p[i]%2)*2-1;
}for(ll i=1;i<(1<<n);i++){
if(s[i&(i-1)] && (a[d[i&(-i)]] & (i&(i-1)))==0) s[i]=1;
}for(ll i=1;i<(1<<n);i++){
for(int j=i;j;j=(j-1)&i){
if(s[j]) f[i]=(f[i]+r[j]*f[i^j])%mod;
}
}f[(1<<n)-1]=(f[(1<<n)-1]+mod)%mod;
cout <<f[(1<<n)-1]*m%mod*((mod+1)/2)%mod;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |