记录编号 |
577504 |
评测结果 |
AAAAAAAAEEEEEEEEEEEE |
题目名称 |
[CSP 2022S]星战 |
最终得分 |
40 |
用户昵称 |
00000 |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
2.367 s |
提交时间 |
2022-11-07 10:53:47 |
内存使用 |
30.83 MiB |
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,m,t,s,p,ans;
int g[2000][2000],k[2000][2000];
int d[2000];//出度
int mark[2000];
void dfs(int x,int h)
{
if(h>n)
{
p=0;
ans=h;
return;
}
if(d[x]!=1) mark[x]=1;//不能再走
for(int q=1;q<=n;q++)
{
if(g[x][q]&&mark[q]==0) dfs(q,h+1);
if(!p) return;
}
}
int main(){
freopen("csp2022_galaxy.in","r",stdin);
freopen("csp2022_galaxy.out","w",stdout);
cin>>n>>m;
for(int q=1;q<=m;q++)
{
int x,y;
cin>>x>>y;
g[x][y]=k[x][y]=1;
}
for(int q=1;q<=n;q++)
{
for(int w=1;w<=n;w++)
{
if(g[q][w]) d[q]++;
}
}
int pi=0;
cin>>t;
while(t--)
{
pi++;
int x,y;
cin>>s;
if(s==1)
{
cin>>x>>y;
g[x][y]=0;
d[x]--;
}
if(s==2)
{
cin>>x;
for(int q=1;q<=n;q++)
{
if(g[q][x])
g[q][x]=0,d[q]--;
}
}
if(s==3)
{
cin>>x>>y;
g[x][y]=1;d[x]++;
}
if(s==4)
{
cin>>x;
for(int q=1;q<=n;q++)
{
if(!g[q][x]&&k[q][x])
g[q][x]=1,d[q]++;
}
}
// for(int q=1;q<=n;q++) cout<<d[q]<<endl;
// cout<<endl;
memset(mark,0,sizeof(mark));
int flag=1;
for(int q=1;q<=n;q++)
{
ans=0;p=1;
if(d[q]!=1)
{
flag=0;break;
}
dfs(q,0);
if(ans==0)
{
flag=0;break;
}
}
if(flag) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}