Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <cstdio>
- #include <cstdlib>
- #include <cmath>
- #include <ctime>
- #include <cstring>
- #include <algorithm>
- #include <vector>
- #include <string>
- #include <map>
- #include <set>
- #include <queue>
- #include <deque>
- #include <bitset>
- #include <unordered_set>
- #include <unordered_map>
- using namespace std;
- typedef long long ll;
- typedef pair <int, int> pii;
- typedef vector <int> vi;
- #define forn(i, n) for (int i = 0; i < (int)n; ++i)
- #define forq(i, q, n) for (int i = (int)q; i < (int)n; ++i)
- #define mk make_pair
- #define psh push_back
- #define all(v) v.begin(), v.end()
- #define X first
- #define Y second
- #define TIME clock() * 1.0 / CLOCKS_PER_SEC
- #define TASK "clock"
- const int INF = (int)1e9 + 7;
- const int MOD = (int)1e9 + 7;
- const int MAXN = (int)1e5 + 7;
- const double EPS = (double)1e-6;
- vector <ll> pr;
- ll st[35], ans;
- int n;
- void zap(int x, ll u)
- {
- //cout << x << " " << u << "\n";
- if (u == st[n] - 1)
- {
- ans += st[n - x];
- return;
- }
- if (x == n)
- return;
- zap(x + 1, u);
- zap(x + 1, u | pr[x]);
- }
- bool comp(vi a, vi b)
- {
- return a.size() > b.size();
- }
- int main()
- {
- //freopen(TASK".in", "r", stdin);
- //freopen(TASK".out", "w", stdout);
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- int m, x, y;
- cin >> n >> m;
- if (m == 0)
- {
- cout << 1;
- return 0;
- }
- vector <vi> g(n);
- pr.resize(n);
- forn(i, m)
- {
- cin >> x >> y;
- x--;
- y--;
- g[x].psh(y);
- g[y].psh(x);
- }
- st[0] = 1;
- forq(i, 1, n + 1)
- st[i] = st[i - 1] * 2;
- //sort1();
- /*bool f = 1;
- while (f)
- {
- f = 0;
- forn(j, n - 1)
- if (g[j].size() < g[j + 1].size())
- {
- forn(w, n)
- for (int &v : g[w])
- {
- if (v == j)
- v = j + 1;
- else if (v == j + 1)
- v = j;
- }
- swap(g[j], g[j + 1]);
- f = 1;
- }
- }*/
- /*forn(i, n)
- if (g[i].size() == 0)
- {
- n = i;
- break;
- }*/
- forn(i, n)
- {
- pr[i] = st[i];
- forn(j, g[i].size())
- pr[i] += st[g[i][j]];
- }
- zap(0, 0);
- cout << ans;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement