社区讨论

0pts 求调玄关

P11601『Fwb』狼人の杀戮参与者 2已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mjwi9l5f
此快照首次捕获于
2026/01/02 14:41
2 个月前
此快照最后确认于
2026/01/04 23:55
2 个月前
查看原帖
rt.这是代码:
CPP
#include<bits/stdc++.h>
using namespace std;

const int MAXN=1e2+5;
struct info{
	int zy;
	bool flag_die=1;
	bool flag_sha=0;
	bool flag_du=0;
	bool flag_jie=0;
	bool flag_yao=0;
	bool flag_dai=0;
	bool flag_isdai=0;
};
struct info a[MAXN];
int t,n;
int main(){
	scanf("%d%d",&t,&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i].zy);
		if(a[i].zy==4){
			a[i].flag_du=1;
			a[i].flag_jie=1;
		}
	}
	for(int i=1;i<=t;i++){
		int m,cnt=0;
		bool flag_cw=1;
		scanf("%d",&m);
		struct info tmp[MAXN]={0};
		int sw[MAXN]={0};
		for(int j=1;j<=n;j++){
			tmp[j].zy=a[j].zy;
			tmp[j].flag_die=a[j].flag_die;
			if(a[j].zy==1)tmp[j].flag_sha=1;
			if(a[j].zy==3)tmp[j].flag_dai=1;
			if(a[j].zy==4){
				tmp[j].flag_du=a[j].flag_du;
				tmp[j].flag_jie=a[j].flag_jie;
				tmp[j].flag_yao=1;
			}
		}
		for(int j=1;j<=m;j++){
			int jd,id1,id2;
			bool flag_blhf=1;
			scanf("%d%d%d",&jd,&id1,&id2);
			if(id1==id2)flag_blhf=0;
			else if(jd==0){
				if(tmp[id1].zy!=1)flag_blhf=0;
				if(tmp[id1].flag_die==0||tmp[id2].flag_die==0)flag_blhf=0;
				if(tmp[id1].flag_sha==0)flag_blhf=0;
				else{
					tmp[id2].flag_die=0;
					tmp[id1].flag_sha=0;
					if(tmp[id2].zy==3)tmp[id2].flag_isdai=1;
					sw[++cnt]=id2;
				}
			}else if(jd==1){
				if(tmp[id1].zy!=4)flag_blhf=0;
				if(tmp[id1].flag_die==0||tmp[id2].flag_die==0)flag_blhf=0;
				if(tmp[id1].flag_yao==0||tmp[id1].flag_du==0)flag_blhf=0;
				else{
					tmp[id2].flag_die=0;
					tmp[id1].flag_du=0;
					tmp[id1].flag_yao=0;
					if(tmp[id2].zy==3)tmp[id2].flag_isdai=1;
					sw[++cnt]=id2;
				}
			}else if(jd==2){
				if(tmp[id1].zy!=4)flag_blhf=0;
				if(tmp[id1].flag_die==0||tmp[id2].flag_die==1)flag_blhf=0;
				if(tmp[id1].flag_yao==0||tmp[id1].flag_jie==0)flag_blhf=0;
				else{
					tmp[id2].flag_die=1;
					tmp[id1].flag_jie=0;
					tmp[id1].flag_yao=0;
					if(tmp[id2].zy==3)a[id2].flag_isdai=0;
					cnt--;
				}
			}else if(jd==3){
				if(tmp[id1].zy!=3)flag_blhf=0;
				if(tmp[id1].flag_die==1||tmp[id2].flag_die==0)flag_blhf=0;
				if(tmp[id1].flag_dai==0)flag_blhf=0;
				else{
					tmp[id2].flag_die=0;
					tmp[id1].flag_dai=0;
					tmp[id1].flag_isdai=0;
					if(tmp[id2].zy==3)tmp[id2].flag_isdai=1;
					sw[++cnt]=id2;
					sw[++cnt]=id1;
				}
			}
			if(flag_blhf==0)flag_cw=0;
		}
		for(int j=1;j<=n;j++)
			if(tmp[j].flag_isdai==1)flag_cw=0;
		if(flag_cw==0)printf("Wrong\n");
		else{
			if(cnt==0)printf("Safe\n");
			else{
				for(int j=1;j<=cnt;j++)
					printf("%d ",sw[j]);
				printf("\n");
			}
			for(int j=1;j<=n;j++){
				a[j].zy=tmp[j].zy;
				a[j].flag_die=tmp[j].flag_die;
				if(tmp[j].zy==4){
					a[j].flag_du=tmp[j].flag_du;
					a[j].flag_jie=tmp[j].flag_jie;
				}
			}
		}
	}
	return 0;
}
只能手搓到这了,样例能过,如果我有什么逻辑上的错误,欢迎指出,玄关。

回复

4 条回复,欢迎继续交流。

正在加载回复...