记录编号 |
240935 |
评测结果 |
AAAAAAAAAA |
题目名称 |
雕塑安置 |
最终得分 |
100 |
用户昵称 |
KZNS |
是否通过 |
通过 |
代码语言 |
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