UVA2636

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

  还是思路!!!!!

posted @ 2016-08-01 12:30  799  阅读(114)  评论(0编辑  收藏  举报