fwb T3 求条
查看原帖
fwb T3 求条
941575
Stars_visitor_tyw楼主2025/1/19 18:08
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t, n, a[55];
map<int,int> mp;
map<int,int> vis;
map<int,int> used, used1[55], used2[55];
vector<int> v[55];
signed main()
{
	cin>>t>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	while(t--)
	{
		int m;
		cin>>m;
		bool f=0;
		vis.clear();
		used.clear();
		for(int i=1;i<=n;i++)
		{
			v[i].clear();
		}
		for(int i=1;i<=m;i++)
		{
			int op, id1, id2;
			cin>>op>>id1>>id2;
			for(int j=1;j<=n;j++)
			{
				used2[1][j]=used2[2][j]=0;
			}
			if(f)continue;
			if(a[id1]==2)
			{
				f=1;
				continue;
			}
			if(op==0)
			{
				if(a[id1]!=1||used[id1]||id1>n||id2>n||mp[id1]||mp[id2]||id1==id2||id1<1||id2<1)
				{
					f=1;
					continue;
				}
				vis[id2]=1;
				used[id1]=1;
				mp[id2]=1;
			}
			if(op==1)
			{
				if(a[id1]!=4||used[id1]||mp[id2]||id1>n||id2>n||mp[id1]||id1==id2||used1[1][id1]||id1<1||id2<1)
				{
					f=1;
					continue;
				}
				vis[id2]=1;
				used[id1]=1;
				mp[id2]=1;
				used1[1][id1]=1;
				used2[1][id1]=1;
			}
			if(op==2)
			{
				if(a[id1]!=4||used[id1]||!vis[id2]||id1>n||id2>n||used1[2][id1]||id1<1||id2<1)
				{
					f=1;
					continue;
				}
				if(a[id2]==3)
				{
					used[id2]=0;
				}
				mp[id2]=0;
				vis[id2]=0;
				used[id1]=1;
				used1[2][id1]=1;
				used2[2][id1]=1;
			}
			if(op==3)
			{
				if(a[id1]!=3||!vis[id1]||used[id1]||id1==id2||mp[id2]||id1>n||id2>n||id1<1||id2<1)
				{
					f=1;
					continue;
				}
				vis[id2]=1;
				mp[id2]=1;
				used[id1]=1;
				v[id1].push_back(id2);
			}
		}
		for(int i=1;i<=n;i++)
		{
			if(vis[i]&&a[i]==3&&!used[i])
			{
				f=1;
				break;
			}
		}
		if(f)
		{
			cout<<"Wrong\n";
			for(int i=1;i<=n;i++)
			{
				if(vis[i])
				{
					mp[i]=0;
					vis[i]=0;
				}
			}
			
			for(int i=1;i<=n;i++)
			{
				if(used2[1][i])used1[1][i]=0;
				if(used2[2][i])used1[2][i]=0;
			}
			continue;
		}
		int cnt=0;
		for(int i=1;i<=n;i++)
		{
			if(vis[i])
			{
				cnt++;
			}
		}
		if(!cnt)
		{
			cout<<"Safe\n";
			continue;
		}
		else
		{
			cout<<cnt<<" ";
			for(int i=1;i<=n;i++)
			{
				if(vis[i])
				{
					cout<<i<<" ";
				}
			}
			cout<<"\n";
		}
	}
}
2025/1/19 18:08
加载中...