比赛 |
CSP2022提高组 |
评测结果 |
AAAAAAAAEEEEEEEEEEEE |
题目名称 |
星战 |
最终得分 |
40 |
用户昵称 |
崔宸铭 |
运行时间 |
2.488 s |
代码语言 |
C++ |
内存使用 |
6.26 MiB |
提交时间 |
2022-10-30 11:18:15 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=1010;
int n,m,q;
int a[N][N],cnt[N],vis[N],num[N];
void circle(int u){
if(num[u]){
for(int i=1;i<=n;i++){
if(num[i]) vis[i]=1;
}
return;
}
num[u]++;
for(int i=1;i<=n;i++){
if(a[u][i]){
circle(i);
}
}
}
bool attack(){
for(int i=1;i<=n;i++){
if(cnt[i]!=1) return false;
}
for(int i=1;i<=n;i++){
if(!vis[i]) circle(i);
}
for(int i=1;i<=n;i++){
if(!vis[i]) return false;
}
return true;
}
int main(){
freopen("csp2022_galaxy.in","r",stdin);
freopen("csp2022_galaxy.out","w",stdout);
cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v;
cin>>u>>v;
a[u][v]=1;
cnt[u]++;
}
cin>>q;
while(q--){
int t;
cin>>t;
int u,v;
if(t==1){
cin>>u>>v;
cnt[u]--;
a[u][v]=-1;
}else if(t==2){
cin>>u;
for(int i=1;i<=n;i++){
if(a[i][u]==1){
a[i][u]=-1;
cnt[i]--;
}
}
}else if(t==3){
cin>>u>>v;
cnt[u]++;
a[u][v]=1;
}else{
cin>>u;
for(int i=1;i<=n;i++){
if(a[i][u]==-1){
a[i][u]=1;
cnt[i]++;
}
}
}
if(attack()) cout<<"YES";
else cout<<"NO";
cout<<endl;
}
return 0;
}