记录编号 600252 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 [HZOI 2015] 厕所里的OIer 最终得分 100
用户昵称 Gravatarzjzhe 是否通过 通过
代码语言 C++ 运行时间 0.501 s
提交时间 2025-04-23 13:07:04 内存使用 8.59 MiB
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=20;
int n,m,f[N][1<<N],c[N];
#undef int
int main(){
#define int long long
	cin>>n>>m;
	for(int i=0;i<m;i++){
		int x,y;cin>>x>>y;
		c[x-1]|=1<<(y-1);
	}
	for(int i=0;i<n;i++){
		if((c[0]>>i&1)==0)f[0][1<<i]=1;
	}
	for(int i=1;i<n;i++){
		for(int s=0;s<(1<<n);s++){
			for(int t=s;t;t&=t-1){
				int j=__builtin_ctz(t);
				if((s>>j&1)&&((c[i]>>j&1)==0)){
					f[i][s]+=f[i-1][s^(1<<j)];
				}
			}
		}
	}
	cout<<f[n-1][(1<<n)-1];
	
	return 0;
}