记录编号 577355 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 [CSP 2022S]星战 最终得分 100
用户昵称 GravatarZRQ 是否通过 通过
代码语言 C++ 运行时间 2.484 s
提交时间 2022-11-01 15:20:56 内存使用 12.59 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<ctime>
#include<cstdlib>
#include<random>
#define ll long long
using namespace std;
mt19937_64 rnd(time(0));
const int N=500005;
int n,m,q;
int icnt[N],cnt[N],tot;
ll v[N],a,b,c[N],rc[N];
int main()
{
	freopen("csp2022_galaxy.in","r",stdin);
	freopen("csp2022_galaxy.out","w",stdout); 
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i) v[i]=rnd(),a^=v[i];
	for(int i=1,x,y;i<=m;++i)
	{
		scanf("%d%d",&x,&y);
		++icnt[y],c[y]^=v[x],b^=v[x],++tot;
	}
	for(int i=1;i<=n;++i) cnt[i]=icnt[i],rc[i]=c[i];
	scanf("%d",&q);
	for(int i=1,op,x,y;i<=q;++i)
	{
		scanf("%d%d",&op,&x);
		if(op==1)
		{
			scanf("%d",&y);
			--tot;
			--icnt[y];
			b^=v[x]; 
			c[y]^=v[x];
		}
		else if(op==2)
		{
			tot-=icnt[x];
			b^=c[x];
			icnt[x]=0;
			c[x]=0;
		}
		else if(op==3)
		{
			scanf("%d",&y);
			++tot;
			++icnt[y];
			b^=v[x];
			c[y]^=v[x];
		}
		else
		{
			tot+=(cnt[x]-icnt[x]);
			b^=(c[x]^rc[x]);
			icnt[x]=cnt[x];
			c[x]=rc[x];
		}
		if(tot==n&&a==b) puts("YES");
		else puts("NO");
	}
	return 0;
}