求#5hack
查看原帖
求#5hack
760841
laozhang1210楼主2025/1/22 15:07

最后一个点了

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int night_time,player_number,m,ma[4][30];
int players[30],witch_which[30];
bool flag,witch_use[30][2];
bool skill[30],dying[30],died[30];
int died_number; 
int main()
{
	cin>>night_time>>player_number;
	for(int i=1;i<=player_number;i++) cin>>players[i];
	while(night_time--)
	{
		flag=false;
		cin>>m;
		for(int i=1;i<=m;i++)
		{
			cin>>ma[1][i]>>ma[2][i]>>ma[3][i];
			if(ma[2][i]>player_number||players[ma[2][i]]==2||ma[2][i]<1)
			{
				cout<<"Wrong\n";
				flag=true;
				//break;
			}
			if(ma[2][i]==ma[3][i]&&ma[1][i]!=2)
			{
				cout<<"Wrong\n";
				flag=true;
				//break;
			}
		}
		if(flag) continue;
		for(int i=1;i<=m;i++)
		{
			if(ma[1][i]==0)
			{
				if(dying[ma[2][i]]||died[ma[2][i]]||players[ma[2][i]]!=1||skill[ma[2][i]]||dying[ma[3][i]]||died[ma[3][i]]) 
				{
					cout<<"Wrong\n";
					//printf("3   dying[ma[2][i]]=%d  deid[ma[2][i]]=%d  players[ma[2][i]]=%d skill[ma[2][i]]=%d dying[ma[3][i]]=%d  died[ma[3][i]]=%d  ma[2][i]=%d\n",dying[ma[2][i]],died[ma[2][i]],players[ma[2][i]]!=1,skill[ma[2][i]],dying[ma[3][i]],died[ma[3][i]],ma[2][i]);
					flag=true;
					break;
				}
				skill[ma[2][i]]=dying[ma[3][i]]=true;
				died_number++;
			}
			else if(ma[1][i]==1)
			{
				if(players[ma[2][i]]!=4||witch_use[ma[2][i]][0]||dying[ma[2][i]]||died[ma[2][i]]||skill[ma[2][i]]||dying[ma[3][i]]||died[ma[3][i]])
				{
					cout<<"Wrong\n";
					flag=true;
					break;
				}
				skill[ma[2][i]]=dying[ma[3][i]]=true;
				died_number++;
				witch_use[ma[2][i]][0]=true;
				witch_which[ma[2][i]]=1;
			}
			else if(ma[1][i]==2)
			{
				if(players[ma[2][i]]!=4||witch_use[ma[2][i]][1]||died[ma[2][i]]||skill[ma[2][i]]||!dying[ma[3][i]]||died[ma[3][i]]||(dying[ma[2][i]]&&ma[3][i]!=ma[2][i]))
				{
					cout<<"Wrong\n";
					flag=true;
					break;
				}
				skill[ma[2][i]]=witch_use[ma[2][i]][1]=true;
				dying[ma[3][i]]=false;
				died_number--;
				witch_which[ma[2][i]]=2;
				if(ma[3][i]==3) skill[ma[3][i]]=false;
			}
			else
			{
				if(players[ma[2][i]]!=3||!dying[ma[2][i]]||died[ma[2][i]]||skill[ma[2][i]]||dying[ma[3][i]]||died[ma[3][i]])
				{
					cout<<"Wrong\n";
					flag=true;
					break;
				}
				dying[ma[3][i]]=true;
				skill[ma[2][i]]=true;
				died_number++;
			}
		}
		for(int i=1;i<=player_number;i++) 
			if(players[i]==3&&dying[i]&&!died[i]&&!skill[i]&&!flag)
			{
				flag=true;
				cout<<"Wrong\n";
				break;
			}
		if(flag)
		{
			died_number=0;
			for(int i=1;i<=player_number;i++)
			{
				if(skill[i]&&(players[i]==4))
				{
					if(witch_which[i]==1)
					{
						witch_which[i]=0;
						witch_use[i][0]=false;
					}
					else if(witch_which[i]==2)
					{
						witch_which[i]=0;
						witch_use[i][1]=false;
					}
				}
				skill[i]=false;
				dying[i]=false;
			}
		}
		else
		{
			if(!died_number) 
			{
				cout<<"Safe\n";
				for(int i=1;i<=player_number;i++)
				{
					skill[i]=false;
					witch_which[i]=0;
				 } 
				/*cout<<"\n\n\n";
				for(int i=1;i<=player_number;i++) printf("i=%d  witch_use[i][0]=%d  witch_use[i][1]=%d\n",i,witch_use[i][0],witch_use[i][1]);
				cout<<"\n\n\n";*/
			}
			else
			{	
				cout<<died_number<<" ";
				for(int i=1;i<=player_number;i++)
				{
					skill[i]=false; 
					witch_which[i]=0;
					if(dying[i]&&!died[i])
					{
						died[i]=true;
						cout<<i<<" ";
					}
				}
				cout<<'\n';
				died_number=0;
			}
		}
	}
}

谢谢了

2025/1/22 15:07
加载中...