大小关系

来源:互联网 发布:淘宝不能使用图片搜索 编辑:程序博客网 时间:2024/05/21 22:26

题目描述

当我们知道一组大小关系之后,可判断所有关系是否都能成立,即关系间没有矛盾。 
例如:A<B, A<C, B<C  通过这组关系我们可以得到A<B<C ,所有关系都成立,没有矛盾。 
 A<B, B<C, C<A  通过前两个关系我们得到 A<B<C ,这个关系与C<A矛盾,所有关系不能同时成立。 

现在我们知道m个关系,请判断这m个关系是否能成立,成立输出YES”,否则输出NO”

输入

多组数据,每组数据如下:

第一行有两个字母m m代表m组关系(1<=m<=400),接下来m行每行有一个关系,用两个不同的字母和一个符号表示。(输入保证字母在A’-‘Z’之间,关系符号只有 > , <

输出

对于每组数据输出YES”NO”.

样例输入

3A<BA<CB<C3A<BB<CC<A

样例输出

YESNO
#include<stdio.h> char a[440][4],flag,qian,hou; void is(int n,char qian,char hou) {     if(flag==0)         return ;     int i;     for(i=0;i<n;i++)     {         if(a[i][0]==hou)         {             if(a[i][1]==qian)             {                 flag=0;                 break;             }             else                is(n,hou,a[i][1]);         }     } } int main() {     int m;     while(scanf("%d",&m)!=EOF)     {         flag=1;         for(int i=0;i<m;i++)         {             char c[5];             scanf("%s",c);             if(c[1]=='<')             {                 a[i][0]=c[0];                 a[i][1]=c[2];             }             else            {                 a[i][0]=c[2];                 a[i][1]=c[0];             }             if(flag)                 is(i,a[i][0],a[i][1]);         }         if(flag)             printf("YES\n");         else             printf("NO\n");     }       return 0; } 
0 0
原创粉丝点击