Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int n = 3;
- int v[2*n+1];
- long long otv;
- bool used[n+1];
- vector<int > g[n+1];
- void dfs(int v)
- {
- used[v] = 1;
- for(int i = 0; i < g[v].size(); ++i)
- {
- int to = g[v][i];
- if(!used[to]) dfs(to);
- }
- }
- void rec(int cur, int *p)
- {
- if(cur > 2*n)
- {
- bool flag = true;
- for(int i = 1; i <= n; ++i)
- g[i].push_back(p[i]);
- for(int i = n+1; i <= 2*n; ++i)
- g[p[i]].push_back(i);
- dfs(1);
- for(int i = 1; i <= n; ++i)
- {
- if(g[i].size()%2!=0) flag = false;
- g[i].clear();
- if(used[i] == 0) flag = false;
- used[i] = 0;
- }
- if(flag == false) return;
- otv++;
- return;
- }
- for(int i = 1; i <= n; ++i)
- {
- p[cur] = i;
- rec(cur+1, p);
- }
- }
- int main()
- {
- rec(1, v);
- cout << (otv/2)/n;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement