Submission #1338780

#TimeUsernameProblemLanguageResultExecution timeMemory
1338780vahagngGeppetto (COCI15_geppetto)C++20
80 / 80
52 ms5784 KiB
#include <iostream>
#include <set>
#include <vector>
using namespace std;

int n, m;
vector<int> adj[22];
long long dp[(1 << 20)];

bool check(int mask) {
	for (int i = 0; i < n; i++) {
		if (mask & (1 << i)) {
			for (auto j : adj[i]) {
				if (mask & (1 << j)) {
					return 0;
				}
			}
		}
	}
	return 1;
}

int main() {
	cin >> n >> m;
	for (int i = 0; i < m; i++) {
		int u, v;
		cin >> u >> v;
		u--, v--;
		adj[u].push_back(v);
		adj[v].push_back(u);
	}
	dp[0] = 1;
	for (int mask = 1; mask < (1 << n); mask++) {
		if (!check(mask)) continue;
		dp[mask] = 1;
	}
	long long ans = 0;
	for (int mask = 0; mask < (1 << n); mask++) {
		ans += dp[mask];
	}
	cout << ans << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...