记录编号 241120 评测结果 AAAAAAAAAA
题目名称 雕塑安置 最终得分 100
用户昵称 GravatarWAHT 是否通过 通过
代码语言 C++ 运行时间 0.152 s
提交时间 2016-03-24 17:04:45 内存使用 8.31 MiB
显示代码纯文本
/* sro mikumikumi orz*/
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int p[21],a[21];
long long f[1048576];
int main()
{
	freopen("arrange.in","r",stdin);
	freopen("arrange.out","w",stdout);
	int n,m;
	cin>>n>>m;
	p[0]=1;
	for(int i=1;i<=n;i++)
		p[i]=p[i-1]<<1;
	for(int i=1;i<=m;i++)
	{
		int x,y;
		cin>>x>>y;
		a[x]+=p[y-1];
	}
	f[0]=1;
	for(int i=1;i<p[n];i++)
	{
		int t,c;
		for(t=i,c=0;t;c++,t-=t&(-t));
		for(t=i&(~a[c]);t;t-=t&(-t))
			f[i]+=f[i^(t&(-t))];
	}
	cout<<f[p[n]-1]<<endl;
}