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 }
