1の#include <iostreamの> 2の#include <cstdioを> 3の#include <cmath> 4の#include < ストリング > 5の#include <CStringの> 6の#include <アルゴリズム> 7の#include <iomanip> 8 使って 名前空間STDを、 9 名前空間Moxing { 10 のconst int型 N = 12、M = 46 。 11 INTのエッジ[N + 5 ]、CNT [ 1 << N + 5 ]、SZ [ 1 << N + 5 ]、N、M。 12 長いです 長い F [ 1 << N + 5 ] [M + 5 ]、G [ 1 << N + 5 ] [M + 5 [M + C]、5 ] [M + 5 ]。 13 構造体の主{ 14 メイン(){ 15 のscanf(" %D%dの"、&N、&M)。 16 のために(int型 I = 1 ; I <= M; iが++ ){ 17 のint X、Y。 18 のscanf(" %D%dの"、およびX&Y)。 19 X - 、y-- 。 20 エッジ[X] | = 1 << Y。 21 エッジ[Y] | = 1 << X。 22 } 23個の C [ 0 ] [ 0 ] = 1 。 24 のために(int型 i = 1 ; iが= Mを<; Iは++ ){ 25個の C [i]が[ 0 ] =のC [i]は[I] = 1 。 26 のための(int型、J = 1、J <I、J ++ ){ 27 C [I] [J] = cは[I- 1 ] [J] + C [I- 1 ] [J- 1 ]。 28 } 29 } 30 INTすべて=(1 << N) - 1 。 31 のために(INT S = 1 ; S <=すべて; S ++ ){ 32の SZ [S] = SZ [S >> 1 ] +(S&1 )。 33 であれば(SZ [S] == 1 ){ 34 G [S] [ 0 ] = 1 ; 35 続け; 36 } 37 のために(int型 i = 0 ; iがn <; iは++ ){ 38 であれば(S&(1 << I))CNT [S] + = SZ [エッジ[I]&S]。 39 } 40 CNT [S] >> = 1 。 41 のために(INT T = S; T; T =(T- 1)・S){ 42 場合(T&(S& - S)){ 43 のためには、(int型、I = 0 ; iが= CNT [t]を<; I ++は) { 44 のための(INT J = 0; J <= CNT [S ^ T]。J ++ ){ 45 F [S] [iが+ J] + = G [T] [I] * C [CNT [S ^ T] [J]。 46 } 47 } 48 } 49 50 } 51 のための(int型 I = 0 ; iが= CNT [S]を<; Iは++ ){ 52 G [S] [I] = Cの[CNT [S] [I] - [F S] [I]。 53 } 54 } 55 二重のANS = 0 。 56 のために(int型 I =0 ; I <= M。I ++ ){ 57の ANS + =(ダブル)F [全て] [I] /のC [CNT [すべて] [I]。 58 // coutの<< [すべて] [i]は<<」「<< C [CNT [すべて]] [i]は<<てendl F; 59の // coutの<< ANS <<」「; 60 } 61 のprintf(" %の.6lf "、ANS /(M + 1 ))。 62 出口(0 ); 63 } 64 } UniversalLove。 65 } 66 INT メイン(){ 67 Moxing ::メイン()。 68 }