提交记录:https://www.luogu.com.cn/record/41604055
code
#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(){
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;
}