70 分和哈希求调
查看原帖
70 分和哈希求调
999274
CNS_5t0_0r2楼主2024/8/7 13:14
#include<bits/stdc++.h>
using namespace std;
const int N = 5e5 + 9;
int n,m,q;
int w[N],r[N],in_sum[N];
long long sum_w,sum_r;
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	srand(time(0));
	cin >> n >> m;
	for(int i = 1;i <= n;i++){
		w[i] = rand();
		sum_w += w[i];
	}
	for(int i = 1;i <= m;i++){
		int u,v;
		cin >> u >> v;
		r[v] += w[u];
		sum_r += w[u];
		in_sum[v] += w[u];
	}
	cin >> q;
	while(q--){
		int op,u,v;
		cin >> op;
		if(op == 1){
			cin >> u >> v;
			sum_r -= w[u];
			r[v] -= w[u];
		}
		else if(op == 2){
			cin >> u;
			sum_r -= r[u];
			r[u] = 0;
		}
		else if(op == 3){
			cin >> u >> v;
			sum_r += w[u];
			r[v] += w[u];
		}
		else if(op == 4){
			cin >> u;
			sum_r += in_sum[u] - r[u];
			r[u] = in_sum[u];
		}
		cout << (sum_w == sum_r ? "YES" : "NO") << '\n';
	}
	return 0;
}
2024/8/7 13:14
加载中...