1 #include<bits/stdc++.h> 2 using namespace std; 3 int ve[7][7]; 4 bool visit[7]; 5 int ans=0; 6 set<set<int> > se; 7 void dfs(int x,set<int> s) 8 { 9 if(!se.count(s)) 10 { 11 se.insert(s); 12 ans++; 13 } 14 if(s.size()==7) 15 return ; 16 for(int j=0;j<7;j++) 17 { 18 if(visit[j]||!ve[x][j]) 19 continue; 20 s.insert(j); 21 visit[j]=1; 22 dfs(j,s); 23 visit[j]=0; 24 s.erase(j); 25 } 26 } 27 void add(int x,int y) 28 { 29 ve[x][y]=1; 30 ve[y][x]=1; 31 } 32 int main() 33 { 34 add(0,1); 35 add(0,5); 36 add(1,6); 37 add(1,2); 38 add(2,6); 39 add(2,3); 40 add(3,4); 41 add(4,5); 42 add(4,6); 43 add(5,6); 44 set<int> s; 45 for(int i=0;i<=6;i++) 46 { 47 s.insert(i); 48 visit[i]=1; 49 dfs(i,s); 50 visit[i]=0; 51 s.erase(i); 52 } 53 cout<<ans<<endl; 54 }