Advertisement
Guest User

Untitled

a guest
Aug 14th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.10 KB | None | 0 0
  1. #include <string.h>
  2. #include <iostream>
  3. #include <cstdio>
  4. #include <ctime>
  5. #include <algorithm>
  6. #include <vector>
  7. #include <set>
  8. #include <cmath>
  9. #include <string>
  10. #include <map>
  11. #include <cassert>
  12. #include <queue>
  13.  
  14. using namespace std;
  15.  
  16. #define forn(i, n)  for (int i = 0; i < int(n); i++)
  17.  
  18. const int N = 25;
  19.  
  20. int n, m;
  21. vector<int> g[N];
  22. long long z[1 << N];
  23.  
  24. long long calc(int mask)
  25. {
  26.     if (z[mask] > -1)
  27.         return z[mask];
  28.     if (mask == 0)
  29.         return (z[mask] = 0);
  30.     int pos = -1;
  31.     forn(i, n)
  32.         if (mask & (1 << i))
  33.             pos = i;
  34.     long long result = calc(mask ^ (1 << pos));
  35.     forn(i, g[pos].size())
  36.     {
  37.         int j = g[pos][i];
  38.         if (mask & (1 << j))
  39.             result = max(result, 1 + calc(mask ^ (1 << pos) ^ (1 << j)));
  40.     }
  41.     return (z[mask] = result);
  42. }
  43.  
  44. int main()
  45. {
  46.     cin >> n >> m;
  47.     forn(i, m)
  48.     {
  49.         int a, b;
  50.         cin >> a >> b;
  51.         g[a - 1].push_back(b - 1);
  52.         g[b - 1].push_back(a - 1);
  53.     }
  54.     memset(z, -1, sizeof(z));
  55.     cout << calc((1 << n) - 1) << endl;
  56.     return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement