题目描述
当我们知道一组大小关系之后,可判断所有关系是否都能成立,即关系间没有矛盾。
例如: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”.
样例输入
3
A<B
A<C
B<C
3
A<B
B<C
C<A
样例输出
YES
NO
#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;
}
1535

被折叠的 条评论
为什么被折叠?



