理解;类似我们离散的命题 因为只有一个是坏的 超过一个人说你坏 你一定就是坏的 有人说你对 你就对了 分为两种情况 1.说你对的是好的 他的判断是正确的 2.说你对的人 是坏的 他的判断是错误的 你是坏的 哈哈哈哈 此时就有两个坏的了 就不合要求了
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
struct information
{
int id,id1,id2;
char res1,res2;
}k[1005];
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
int ct=0,ans;
for(int i=0; i<n; i++)
{
cin>>k[i].id>>k[i].id1>>k[i].res1>>k[i].id2>>k[i].res2;
}
for(int i=0; i<n; i++)
{
int flag=1;
for(int j=0; j<n; j++)
{
if(i==j)continue;
if(k[j].res1=='N')
{
if(k[i].id!=k[j].id1){flag=0;break;}
}
if(k[j].res2=='N')
{
if(k[i].id!=k[j].id2){flag=0;break;}
}
if(k[j].res1=='Y')
{
if(k[i].id==k[j].id1){flag=0;break;}
}
if(k[j].res2=='Y')
{
if(k[i].id==k[j].id2){flag=0;break;}
}
}
if(flag)
{
ct++;
ans=i;
}
}
if(ct>1||ct==0)
cout<<"impossible"<<endl;
else
cout<<k[ans].id<<endl;
}
}
还是思路!!!!!