最后一个点了
#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;
}
}
}
}
谢谢了