Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int main()
- {
- // freopen("input.txt", "r", stdin);
- int g[32];
- int suf[32];
- int n, m;
- cin >> n >> m;
- for(int i = 1; i <= n; ++i)
- {
- g[i] = (1 << i);
- }
- for(int i = 0; i < m; ++i)
- {
- int a, b;
- cin >> a >> b;
- g[a] |= (1 << b);
- g[b] |= (1 << a);
- }
- suf[n + 1] = 0;
- for(int i = n; i > 0; --i)
- {
- suf[i] = suf[i + 1] | g[i];
- }
- int nm[32];
- int cur[32];
- int ptr = 1;
- nm[ptr] = 1;
- cur[0] = 0;
- cur[ptr] = 0;
- int ans = 0;
- int np1 = n + 1;
- int msk = (1 << (n + 1)) - 2;
- versuta:
- if(ptr == 0)
- {
- cout << ans << endl;
- return 0;
- }
- if(cur[ptr] == msk)
- {
- ans += (1 << (n + 1 - ptr));
- --ptr;
- goto versuta;
- }
- if(ptr == np1)
- {
- --ptr;
- goto versuta;
- }
- if(nm[ptr] == -1)
- {
- --ptr;
- goto versuta;
- }
- if((cur[ptr] | suf[ptr]) != msk)
- {
- --ptr;
- goto versuta;
- }
- if(nm[ptr] == 0)
- {
- cur[ptr + 1] = cur[ptr];
- nm[ptr] = -1;
- ++ptr;
- nm[ptr] = 1;
- goto versuta;
- }
- if(nm[ptr] == 1)
- {
- cur[ptr + 1] = g[ptr] | cur[ptr];
- nm[ptr] = 0;
- ++ptr;
- nm[ptr] = 1;
- goto versuta;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement