sum hash 45pts求调
查看原帖
sum hash 45pts求调
464732
luqyou楼主2023/8/20 16:24
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=5e5+10;
const int mod=1e9+7;
int n,m,q,g[maxn],in[maxn],val[maxn],sum,nowsum;
mt19937 wsy;
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		val[i]=wsy()%mod;
		sum+=val[i];
	}
	for(int i=1;i<=m;i++){
		int u,v;
		cin>>u>>v;
		g[u]+=val[v];
		nowsum+=val[v];
	} 
	for(int i=1;i<=n;i++){
		in[i]=g[i];
	}
	cin>>q;
	while(q--){
		int op,u,v;
		cin>>op;
		if(op==1){
			cin>>u>>v;
			in[v]-=val[u];
			nowsum-=val[u];
		} 
		if(op==2){
			cin>>u;
			nowsum-=in[u];
			in[u]=0;
		}
		if(op==3){
			cin>>u>>v;
			in[v]+=val[u];
			nowsum+=val[u];
		}
		if(op==4){
			cin>>u;
			nowsum+=(g[u]-in[u]);
			in[u]=g[u];
		}
//		cout<<sum<<" "<<nowsum<<endl;
		if(sum==nowsum){
			cout<<"YES"<<endl;
		}
		else{
			cout<<"NO"<<endl;
		}
	}
	return 0;
}
2023/8/20 16:24
加载中...