UVA2636-LMLPHP

UVA2636-LMLPHP

理解;类似我们离散的命题  因为只有一个是坏的 超过一个人说你坏  你一定就是坏的  有人说你对 你就对了 分为两种情况 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;
}
}

  还是思路!!!!!

05-11 22:05