constint mod=1e9+7; double dp[(1<<10)+5][105],c[105][105],ans; structyyy{ int x,y; }e[105]; int n,m,g[(1<<10)]; signedmain(void){ // freopen("1.in","r",stdin); int i,j,k,t; read(n);read(m); for (i=1;i<=m;i++) read(e[i].x),read(e[i].y),e[i].x--,e[i].y--; for (i=0;i<(1<<n);i++) for (j=1;j<=m;j++) if ((i>>e[j].x)%2&&(i>>e[j].y)%2) g[i]++; for (i=0;i<=m;i++) { c[i][0]=1; for (j=1;j<=i;j++) c[i][j]=c[i-1][j-1]+c[i-1][j]; } int N=(1<<n); for (i=1;i<N;i++) { int z=min(n+1,__builtin_ctz(i)); for (t=i&(i-1);t;t=(t-1)&i) if ((t>>z)&1) { for (j=0;j<=g[i^t];j++) { for (k=0;k<=g[t];k++) dp[i][j+k]+=(1-dp[t][k])*c[g[t]][k]*c[g[t^i]][j]/c[g[i]][j+k];//这j+k条边并没有先后顺序 } } } for (i=0;i<=m;i++) ans+=dp[N-1][i]/(m+1); printf("%.6lf",ans); return0; }