wa#9,玄关求hack/调
查看原帖
wa#9,玄关求hack/调
928846
sbh2012楼主2025/1/22 10:48
#include<bits/stdc++.h>
using namespace std;
int a[25];
int b[25];
bool f[25];
int ci[25][2];
int t,n;
bool f1[25];
bool pan=0;
int d[25],j[25];
int s;
bool lang(int id1,int id2){
	if(id1<=n&&id2<=n&&f1[id1]==0&&f1[id2]==0&&ci[id1][0]==0&&id1!=id2){
		f1[id2]=1;
		ci[id1][0]++;
		return 1;	
	}
	return 0;
}
bool wukill(int id1,int id2){
	if(id1<=n&&id2<=n&&f1[id1]==0&&f1[id2]==0&&ci[id1][0]==0&&id1!=id2){
		f1[id2]=1;
		ci[id1][0]++;
		d[id1]++;
		return 1;	
	}
	return 0;
}
bool wujiu(int id1,int id2){
	if(f1[id1]==1){
		if(id2==id1&&ci[id1][1]==0){
			f1[id1]=0;
			ci[id1][1]++;
			j[id1]++;
			return 1;	
		}
		return 0;
	}
	if(id1<=n&&id2<=n&&f1[id1]==0&&f1[id2]==1&&ci[id1][1]==0){
		f1[id2]=0;
		ci[id1][1]++;
		j[id1]++;
		return 1;	
	}
	return 0;
}
bool liejiu(int id1,int id2){
	if(id1<=n&&id2<=n&&f1[id1]==1&&f1[id2]==0&&b[id1]==0&&id1!=id2){
		b[id1]=1;
		f1[id2]=1;
		return 1;	
	}
	return 0;
}
int main(){ 
	cin>>t>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	while(t--){
		s=0;
		pan=0;
		int m;
		cin>>m;
		while(m--){
			int op,id1,id2;
			cin>>op>>id1>>id2;
			if(op==0){
				if(lang(id1,id2)==0||a[id1]!=1){
					pan=1;
				}
			}
			if(op==1){
				if(wukill(id1,id2)==0||a[id1]!=4){
					pan=1;
				}
			}
			if(op==2){
				if(wujiu(id1,id2)==0||a[id1]!=4){
					pan=1;
				}
			}
			if(op==3){
				if(liejiu(id1,id2)==0||a[id1]!=3){
					pan=1;
				}
			}
		}
		for(int i=1;i<=n;i++){
			if(f1[i]==1&&a[i]==3&&b[i]==0){
				pan=1;
			} 
		} 
		s=0;
		for(int i=1;i<=n;i++){
			if(f1[i]==1&&f[i]!=f1[i]){
				s++;
			} 
		} 
		if(pan==1){
			cout<<"Wrong\n";
			for(int i=1;i<=n;i++){
				if(f[i]==0){
					b[i]=0;
				}
				f1[i]=f[i];
				if(a[i]==1){
					ci[i][0]=0;
				}
				if(a[i]==4){
					ci[i][0]-=d[i];
					ci[i][1]-=j[i];
					d[i]=j[i]=0;
				}
			}
			
		}else if(s==0){
			cout<<"Safe\n"; 
			for(int i=1;i<=n;i++){
				d[i]=j[i]=0;
				f[i]=f1[i];
				f1[i]=f[i];
				if(a[i]==1){
					ci[i][0]=0;
				}
				if(f[i]==0){
					b[i]=0;
				}
			}
		}else{
			cout<<s<<' ';
			for(int i=1;i<=n;i++){
				d[i]=j[i]=0;
				if(f1[i]==1&&f1[i]!=f[i]){
					cout<<i<<' ';	
				}
				f[i]=f1[i];
				f1[i]=f[i];
				if(a[i]==1){
					ci[i][0]=0;
				}
				if(f[i]==0){
					b[i]=0;
				}
			}
			cout<<endl;
		}
	}
	return 0;
}
2025/1/22 10:48
加载中...