tijie
2025-10-11 22:54:39
发布于:北京
15阅读
0回复
0点赞
随机化这一块
#include <bits/stdc++.h>
using namespace std;
const int maxn=5e5+5;
int q,n,m,cnt,sum,need;
long long w[maxn],ru[maxn],mx[maxn];
int main(){
cin>>n>>m;
mt19937 rnd(time(0));
for(int i=1;i<=n;i++){
w[i]=rnd();
sum+=w[i];
}
for(int i=1;i<=m;i++){
int u,v;
cin>>u>>v;
mx[v]+=w[u];
ru[v]+=w[u];
need+=w[u];
}
cin>>q;
while(q--){
int op,u,v;
cin>>op;
if(op==1){
cin>>u>>v;
need-=w[u];
ru[v]-=w[u];
}
else if(op==2){
cin>>u;
need-=ru[u];
ru[u]=0;
}
else if(op==3){
cin>>u>>v;
need+=w[u];
ru[v]+=w[u];
}
else{
cin>>u;
need-=ru[u];
need+=mx[u];
ru[u]=mx[u];
}
if(need==sum) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
这里空空如也






有帮助,赞一个