自测40,CCF爆0
想了大半年没搞懂
哪位大佬能救救孩子吗 嘤嘤嘤
#include<bits/stdc++.h>
using namespace std;
long long n,m,c,k;
long long a[1000001];
long long p[1000001];
long long q[1000001];
bool check[1000001]={false};
long long C[100000001];
bool yan=true;
int main()
{
//freopen("zoo.in","r",stdin);
//freopen("zoo.out","w",stdout);
cin>>n>>m>>c>>k;
for(int i=1;i<=n;i++)
cin>>a[i];
long long ans=a[1];
for(int i=2;i<=n;i++)
ans|=a[i];
for(int i=1;i<=m;i++)
cin>>p[i]>>q[i];
//cout<<ans<<endl;
for(int i=1;i<=m;i++)
{
//cout<<(ans>>p[i])%2<<endl;
if(((ans>>p[i])%2)==1)
check[q[i]]=true;
}
for(int i=1;i<=c;i++)
{
if(check[i]==true)C[i]=1;
else C[i]=0;
}
long long sum=0;
for(long long i=0;i<=pow(2,k)-1;i++){
yan=true;
for(int j=1;j<=m;j++)
{
if(((i>>p[j])%2==1)&&C[q[j]]==0)
{
yan=false;
break;
}
}
if(yan==true)sum++;
}
sum-=n;
cout<<sum;
return 0;
}