记录编号 240935 评测结果 AAAAAAAAAA
题目名称 雕塑安置 最终得分 100
用户昵称 GravatarKZNS 是否通过 通过
代码语言 C++ 运行时间 1.375 s
提交时间 2016-03-24 08:49:15 内存使用 207.32 MiB
显示代码纯文本
//KZNS
#include <fstream>
using namespace std;
//
ifstream fin ("arrange.in");
ofstream fout ("arrange.out");
//
int N, M;
unsigned int xz[23] = {0};
long long ck[23][1048587] = {0};
bool ud[23][1048587] = {0};
//
void rin() {
	fin >> N >> M;
	int a, b;
	for (int i = 0; i < M; i++) {
		fin >> a >> b;
		xz[a] |= (1 << (b-1));
	}
}
long long CK(int x, unsigned int zz) {
	if (ud[x][zz])
		return ck[x][zz];
	ud[x][zz] = true;
	if (x == N) {
		for (int i = 0; i < N; i++)
			if (!((zz | xz[x]) & (1 << i)))
				ck[x][zz]++;
	}
	else {
		for (int i = 0; i < N; i++)
			if (!((zz | xz[x]) & (1 << i)))
				ck[x][zz] += CK(x + 1, zz | (1 << i));
	}
	return ck[x][zz];
}
//
int main() {
	rin();
	fout << CK(1, 0);
	return 0;
}
//UBWH