Advertisement
Guest User

Untitled

a guest
Feb 14th, 2016
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.25 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cstdio>
  4. #include <cstdlib>
  5. #include <cmath>
  6. #include <ctime>
  7. #include <cstring>
  8. #include <algorithm>
  9. #include <vector>
  10. #include <string>
  11. #include <map>
  12. #include <set>
  13. #include <queue>
  14. #include <deque>
  15. #include <bitset>
  16. #include <unordered_set>
  17. #include <unordered_map>
  18.  
  19. using namespace std;
  20.  
  21. typedef long long ll;
  22. typedef pair <int, int> pii;
  23. typedef vector <int> vi;
  24.  
  25. #define forn(i, n) for (int i = 0; i < (int)n; ++i)
  26. #define forq(i, q, n) for (int i = (int)q; i < (int)n; ++i)
  27. #define mk make_pair
  28. #define psh push_back
  29. #define all(v) v.begin(), v.end()
  30. #define X first
  31. #define Y second
  32. #define TIME clock() * 1.0 / CLOCKS_PER_SEC
  33. #define TASK "clock"
  34.  
  35. const int INF = (int)1e9 + 7;
  36. const int MOD = (int)1e9 + 7;
  37. const int MAXN = (int)1e5 + 7;
  38. const double EPS = (double)1e-6;
  39.  
  40. vector <ll> pr;
  41. ll st[35], ans;
  42. int n;
  43.  
  44. void zap(int x, ll u)
  45. {
  46. //cout << x << " " << u << "\n";
  47. if (u == st[n] - 1)
  48. {
  49. ans += st[n - x];
  50. return;
  51. }
  52. if (x == n)
  53. return;
  54. zap(x + 1, u);
  55. zap(x + 1, u | pr[x]);
  56. }
  57.  
  58. bool comp(vi a, vi b)
  59. {
  60. return a.size() > b.size();
  61. }
  62.  
  63. int main()
  64. {
  65. //freopen(TASK".in", "r", stdin);
  66. //freopen(TASK".out", "w", stdout);
  67. freopen("input.txt", "r", stdin);
  68. freopen("output.txt", "w", stdout);
  69. int m, x, y;
  70. cin >> n >> m;
  71. if (m == 0)
  72. {
  73. cout << 1;
  74. return 0;
  75. }
  76. vector <vi> g(n);
  77. pr.resize(n);
  78. forn(i, m)
  79. {
  80. cin >> x >> y;
  81. x--;
  82. y--;
  83. g[x].psh(y);
  84. g[y].psh(x);
  85. }
  86. st[0] = 1;
  87. forq(i, 1, n + 1)
  88. st[i] = st[i - 1] * 2;
  89. //sort1();
  90. /*bool f = 1;
  91. while (f)
  92. {
  93. f = 0;
  94. forn(j, n - 1)
  95. if (g[j].size() < g[j + 1].size())
  96. {
  97. forn(w, n)
  98. for (int &v : g[w])
  99. {
  100. if (v == j)
  101. v = j + 1;
  102. else if (v == j + 1)
  103. v = j;
  104. }
  105. swap(g[j], g[j + 1]);
  106. f = 1;
  107. }
  108. }*/
  109. /*forn(i, n)
  110. if (g[i].size() == 0)
  111. {
  112. n = i;
  113. break;
  114. }*/
  115. forn(i, n)
  116. {
  117. pr[i] = st[i];
  118. forn(j, g[i].size())
  119. pr[i] += st[g[i][j]];
  120. }
  121. zap(0, 0);
  122. cout << ans;
  123. return 0;
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement