记录编号 577531 评测结果 AAAAAAAAAAAAAAAAWWWW
题目名称 [CSP 2022S]星战 最终得分 80
用户昵称 Gravataryrtiop 是否通过 未通过
代码语言 C++ 运行时间 7.479 s
提交时间 2022-11-08 15:42:09 内存使用 53.42 MiB
显示代码纯文本
#include <bits/stdc++.h>

const int maxn = 5e5 + 5;
std::set<int> G[maxn],S[maxn];
int n,m,deg[maxn],ans;

int main() {
	freopen("csp2022_galaxy.in","r",stdin);
	freopen("csp2022_galaxy.out","w",stdout);
	scanf("%d %d",&n,&m);
	for(int i = 1;i <= m;++ i) {
		int u,v;
		scanf("%d %d",&u,&v);
		S[v].emplace(u);
		++ deg[u];
	}
	for(int i = 1;i <= n;++ i)
		ans += (deg[i] == 1);
	int Q,cnt = 0;
	scanf("%d",&Q);
	while(Q --) {
		int op,u,v;
		scanf("%d %d",&op,&u);
		if(cnt >= 2e6) {
			if(op == 1||op == 3)scanf("%d",&v);
			puts("NO");
			continue ;
		}
		if(op == 1) {
			scanf("%d",&v);
			S[v].erase(u);
			G[v].emplace(u);
			ans -= (deg[u] == 1);
			ans += ((-- deg[u]) == 1);
			++ cnt;
		}
		else if(op == 2) {
			for(auto& v : S[u])
				G[u].emplace(v),++ cnt,ans -= (deg[v] == 1),ans += ((-- deg[v]) == 1);
			S[u].clear();
		}
		else if(op == 3) {
			scanf("%d",&v);
			G[v].erase(u);
			S[v].emplace(u);
			ans -= (deg[u] == 1);
			ans += ((++ deg[u]) == 1);
			++ cnt;
		}
		else {
			for(auto& v : G[u])
				S[u].emplace(v),++ cnt,ans -= (deg[v] == 1),ans += ((++ deg[v]) == 1);
			G[u].clear();
		}
		if(ans == n)puts("YES");
		else puts("NO");
	}
	return 0;
}