社区讨论
20pts求条
P11601『Fwb』狼人の杀戮参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhji41dg
- 此快照首次捕获于
- 2025/11/04 02:56 4 个月前
- 此快照最后确认于
- 2025/11/04 02:56 4 个月前
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int rs [30] , tot , ld [30] , ldy [30] , ljy [30] , sf [30] , ltot , lnt [30] , ldie [30] , lr , lr1 , nt [30];
bool die [30] , dy [30] , jy [30] , xd [30] , kq [30] , f [30];
signed main() {
int t , n;
cin >> t >> n;
for(int i = 1 ; i <= n ; i ++)
cin >> sf [i];
for(int k = 1 ; k <= t ; k ++)
{
int m;
cin >> m;
bool f1 = 0 , f2 = 0 ;
tot = 0;
for(int i = 1 ; i <= n ; i ++)
{
ltot = tot;
ldy [i] = dy [i];
ljy [i] = jy [i];
ldie [i] = die [i];
lnt [i] = nt [i];
}
// for(int i = 1 ; i <= n ; i ++)
// {
// cout << ldy [i] << " ";
// cout << ljy [i] << " ";
// cout << ldie [i] << " ";
// cout << lnt [i] << " ";
// cout << endl;
// }
memset(xd , 0 , sizeof(xd));
while(m --)
{
int x;
cin >> x;
int d1 , d2;
if(x == 0)
{
cin >> d1 >> d2;
if(f2 == 0)
{
if(d1 == d2 || xd [d1] == 1 || sf [d1] != 1 || die [d2] == 1)
{
// cout << "l" << " ";
// for(int i = 1 ; i <= n ; i ++)
// {
// cout << dy [i] << " ";
// cout << jy [i] << " ";
// cout << die [i] << " ";
// cout << nt [i] << " ";
// cout << endl;
// }
f2 = 1;
}
else
{
// cout << "l" << endl;
die [d2] = 1;
xd [d1] = 1;
rs [++ tot] = d2;
nt [d2] = k;
}
}
}
if(x == 1)
{
cin >> d1 >> d2;
if(f2 == 0)
{
if(d1 == d2 || xd [d1] == 1 || sf [d1] != 4 || die [d2] == 1 || dy [d2] == 1)
{
// cout << "nd" << " ";
f2 = 1;
}
else
{
// cout << "nd" << endl;
die [d2] = 1;
xd [d1] = 1;
dy [d1] = 1;
rs [++ tot] = d2;
nt [d2] = k;
}
}
}
if(x == 2)
{
cin >> d1 >> d2;
if(f2 == 0)
{
if(xd [d1] == 1 || sf [d1] != 4 || die [d2] == 0 || nt [d2] != k || jy [d2] == 1)
{
// cout << "nj" << " ";
f2 = 1;
}
else
{
// cout << "nj" << endl;
if(sf [d2] == 3) xd [d2] = 0;
die [d2] = 0;
xd [d1] = 1;
jy [d1] = 1;
nt [d2] = 0;
}
}
}
if(x == 3)
{
cin >> d1 >> d2;
if(f2 == 0)
{
if(xd [d1] == 1 || sf [d1] != 3 || die [d2] == 1 || die [d1] == 0)
{
// cout << "lr" << " ";
f2 = 1;
}
else
{
lr = d2;
lr1 = d1;
xd [d1] = 1;
}
}
}
}
for(int i = 1 ; i <= n; i ++)
{
if(xd [i] == 1 && f [i] == 0 && sf [i] == 3)
{
// cout << "lr" << endl;
die [lr] = 1;
nt [lr] = k;
rs [++ tot] = lr;
f [i] = 1;
}
if(sf [i] == 3 && die [i] == 1 && xd [i] == 0 && f [i] == 0)
{
// cout << i << "lr" << endl;
f2 = 1;
f [i] = 1;
break;
}
}
if(f2 == 0)
{
// for(int i = 1 ; i <= n ; i ++)
// cout << die [i] << " ";
// cout << endl;
// for(int i = 1 ; i <= n ; i ++)
// {
// cout << dy [i] << " ";
// cout << jy [i] << " ";
// cout << die [i] << " ";
// cout << nt [i] << " ";
// cout << endl;
// }
for(int i = 1 ; i <= n ; i ++)
for(int j = 1 ; j <= n ; j ++)
if(nt [i] == k && die [rs [j]] == 1 && rs [j] == i) f1 = 1;
if(f1 == 1)
{
cout << tot << " ";
for(int i = 1 ; i <= n ; i ++)
{
for(int j = 1 ; j <= n ; j ++)
{
if(nt [i] == k && die [rs [j]] == 1 && rs [j] == i) cout << i << " ";
}
}
}
else cout << "Safe";
cout << endl;
}
else
{
cout << "Wrong" << endl;
for(int i = 1 ; i <= n ; i ++)
{
tot = ltot;
dy [i] = ldy [i];
jy [i] = ljy [i];
die [i] = ldie [i];
nt [i] = lnt [i];
}
}
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...