bzoj3925

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 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/Moxingtianxia/p/11373928.html