Advertisement
Guest User

Untitled

a guest
Mar 29th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4.  
  5. const int n = 3;
  6. int v[2*n+1];
  7. long long otv;
  8. bool used[n+1];
  9. vector<int > g[n+1];
  10.  
  11. void dfs(int v)
  12. {
  13. used[v] = 1;
  14. for(int i = 0; i < g[v].size(); ++i)
  15. {
  16. int to = g[v][i];
  17. if(!used[to]) dfs(to);
  18. }
  19. }
  20.  
  21. void rec(int cur, int *p)
  22. {
  23. if(cur > 2*n)
  24. {
  25. bool flag = true;
  26. for(int i = 1; i <= n; ++i)
  27. g[i].push_back(p[i]);
  28. for(int i = n+1; i <= 2*n; ++i)
  29. g[p[i]].push_back(i);
  30. dfs(1);
  31. for(int i = 1; i <= n; ++i)
  32. {
  33. if(g[i].size()%2!=0) flag = false;
  34. g[i].clear();
  35. if(used[i] == 0) flag = false;
  36. used[i] = 0;
  37. }
  38. if(flag == false) return;
  39. otv++;
  40. return;
  41. }
  42. for(int i = 1; i <= n; ++i)
  43. {
  44. p[cur] = i;
  45. rec(cur+1, p);
  46. }
  47. }
  48.  
  49. int main()
  50. {
  51. rec(1, v);
  52. cout << (otv/2)/n;
  53. return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement