// source problem : 
#include <bits/stdc++.h>
using namespace std;
#define all(x) x.begin(), x.end()
#define int long long
#define MASK(i) (1LL << (i))
void ckmax(int& f, int s)
{
	f = (f > s ? f : s);
}
void ckmin(int& f, int s)
{
	f = (f < s ? f : s);
}
int n, d[20][20] = {};
int cnt = 0;
void solve(int cur, int mask)
{
	if (cur == n)
	{
		cnt++;
		return;
	}
	solve(cur + 1, mask);
	int ok = 1;
	for (int i = 0; i < cur; i++)
	{
		if ((mask >> i) & 1)
		{
			if (d[i][cur]) ok = 0;
		}
	}
	if (ok) solve(cur + 1, mask | MASK(cur));
}
int32_t main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	int m;
	cin >> n >> m;
	for (int i = 0; i < m; i++)
	{
		int u, v;
		cin >> u >> v;
		u--, v--;
		d[u][v] = d[v][u] = 1;
	}
	solve(0, 0);
	cout << cnt;
	return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |