萌新加ull和k=64特判还95求助
查看原帖
萌新加ull和k=64特判还95求助
105727
chenziqian楼主2020/11/9 19:39

提交记录:https://www.luogu.com.cn/record/41604055

codecode

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
int n,m,c,k;
ull x;
int p[1000003],q[1000003];
bool f[70];
bool pre[70];
bool s[100000003];
ull ans=1;
int main(){
	//freopen("zoo.in","r",stdin);
	//freopen("zoo.out","w",stdout);
	scanf("%d%d%d%d",&n,&m,&c,&k);
	if(n==0&&m==0&&k==64){
		printf("18446744073709551616");
		return 0;
	}
	int h=0;
	for(int i=1;i<=n;i++){
		scanf("%llu",&x);
		h=0;
		while(x){
			if(x&1){
				pre[h]=1;
			}
			x>>=1llu;
			h++;
		}
	}
	for(int i=1;i<=m;i++){
		scanf("%d%d",p+i,q+i);
		if(pre[p[i]]==1) s[q[i]]=1;
	}
	for(int i=0;i<k;i++){
		f[i]=1;
	}
	for(int i=1;i<=m;i++){
		if(s[q[i]]==0) f[p[i]]=0;
	}
	for(int i=0;i<k;i++){
		if(f[i]) ans<<=1llu;
	}
	ans-=n;
	printf("%lld",ans);
	return 0;
}
2020/11/9 19:39
加载中...