记录编号 389936 评测结果 AAAAAAAAAA
题目名称 [POJ2441]安排公牛 最终得分 100
用户昵称 Gravatarconfoo 是否通过 通过
代码语言 C++ 运行时间 0.158 s
提交时间 2017-04-01 10:36:05 内存使用 8.29 MiB
显示代码纯文本
#include <cstdio>
#define file(x) "examnine."#x
const int N = 21;
typedef unsigned int uint;
int n, m, a[N][N];
uint f[1 << N | 1], ans;
int main() {
	freopen(file(in), "r", stdin);	
	freopen(file(out), "w", stdout);
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; i++){
		scanf("%d", &a[i][0]);
		for (int j = 1; j <= a[i][0]; j++) scanf("%d", &a[i][j]), a[i][j]--;
	}
	f[0] = 1;
	for (int s = 0; s < 1 << m; s++) {
		int p = __builtin_popcount(s);
		for (int i = 1; i <= a[p][0]; i++) if (s&(1 << a[p][i]))
			f[s] += f[s&~(1 << a[p][i])];
		if (p == n) ans += f[s];
	}
	printf("%u", ans);
}