悬关求调,#21没过
查看原帖
悬关求调,#21没过
873786
wangjiajinself楼主2024/10/12 22:15
#include<iostream>
#include<cstdio>
using namespace std;
const int N=1e6+10,K=1e8+10;
unsigned long long n,m,c,k,a[N],p[N],q[N],lop[N];
bool uio[K],ui[101];
unsigned long long pow(unsigned long long x,int a){
	unsigned long long ans=1;
	for(int i=1;i<=a;i++) ans*=x;
	return ans;
}
int main()
{
	cin>>n>>m>>c>>k;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=m;i++){
		cin>>p[i]>>q[i];
		lop[p[i]]=q[i];
	}
	for(int i=1;i<=n;i++){
		int cnt=0;
		while(a[i]>0){
			if(a[i]&1){
				uio[lop[cnt]]=1;
				ui[cnt]=1;
			}
			a[i]>>=1;
			cnt++;
		}
	}
	int cnt=0;
	for(int i=1;i<=m;i++){
		if(uio[q[i]]==0&&ui[p[i]]==0) {
//			cout<<i<<endl;
			ui[p[i]]=1,uio[q[i]]=1;
			cnt++;
		}
	}
//	cout<<cnt<<endl;
	cout<<pow((unsigned long long)2,k-cnt)-n;
	return 0;
}

2024/10/12 22:15
加载中...