记录编号 |
577355 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
[CSP 2022S]星战 |
最终得分 |
100 |
用户昵称 |
ZRQ |
是否通过 |
通过 |
代码语言 |
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;
}