1 条题解

  • 0
    @ 2023-7-19 16:53:56

    image image image

    #include <bits/stdc++.h>
    #define ll long long
    #define mod 1000000007
    #define mid (l+r>>1)
    using namespace std;
    const int N=500005;
    int n,m,k,s,t,w[N],u,v,op;
    ll b[N],c[N],U,S;
    int main(){
    	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    	srand(time(NULL));
    	cin>>n>>m;
    	for (int i=1;i<=n;++i){
    		w[i]=rand();
    		S+=w[i];
    	}
    	for (int i=1;i<=m;++i){
    		cin>>s>>t;
    		U+=w[s];//当前权值 
    		b[t]+=w[s];//当前点权值之和 
    		c[t]=b[t];// 最大权值 
    	}
    	cin>>op;
    	for (int i=1;i<=op;++i){
    		cin>>t>>u;
    		if (t==1){
    			cin>>v;
    			U-=w[u];
    			b[v]-=w[u];
    		}
    		else if (t==2){
    			U-=b[u];
    			b[u]=0;
    		}
    		else if (t==3){
    			cin>>v;
    			U+=w[u];
    			b[v]+=w[u];
    		}
    		else {
    			U+=(c[u]-b[u]);
    			b[u]=c[u];
    		}
    		if (U==S) puts("YES");
    		else puts("NO");
    	}
    }
    
    • 1

    信息

    ID
    299
    时间
    2000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    31
    已通过
    26
    上传者