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