fork download
  1. #include <bits/stdc++.h>
  2. #define pb push_back
  3. #define INF 0x3f3f3f3f
  4. using namespace std;
  5.  
  6. void solve() {
  7. int msk[32];
  8. for(int i = 0 ; i < 32 ; i++) {
  9. msk[i] = 0;
  10. msk[i] |= (1<<i);
  11. }
  12. int n, m; cin >> n >> m;
  13. assert(n >= 1 and n <= 20);
  14. assert(m >= 0 and m <= (n*(n-1))/2);
  15. for(int i = 0 ; i < m ; i++) {
  16. int u, v; cin >> u >> v;
  17. assert(u >= 1 and u <= n);
  18. assert(v >= 1 and v <= n);
  19. u--, v--;
  20. msk[u] |= (1<<v);
  21. msk[v] |= (1<<u);
  22. }
  23.  
  24. int ans = INF;
  25. for(int i = 1 ; i < (1<<n) ; i++) {
  26. int cur_mask = 0;
  27. for(int cnt = 0 ; cnt < n ; cnt++) if(i&(1<<cnt)) cur_mask |= msk[cnt];
  28. if(__builtin_popcount(cur_mask) == n) ans = min(ans, __builtin_popcount(i));
  29. }
  30.  
  31. assert(ans >= 1 and ans <= n);
  32. cout << ans << "\n";
  33. }
  34.  
  35. int main() {
  36. int t; cin >> t; while(t--) solve();
  37. }
Runtime error #stdin #stdout #stderr 0s 3464KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
prog: prog.cpp:14: void solve(): Assertion `m >= 0 and m <= (n*(n-1))/2' failed.