#include<stdio.h> #include<stdlib.h> #include<string.h> int main() { int n,i,j,k; int sum[1010],c[1010]; //记录是否获胜 char a[1010][100],b[1010][100]; //记录每队选手的名字 while(scanf("%d%*c",&n),n) { memset(sum,0,sizeof(sum)); //初始化使sum=0,表失败 for(i=0;i<n;i++) { scanf("%s%s",&a[i],&b[i]); sum[i]=1; //表示前面a[i]获胜,b[i]失败 } for(i=0;i<n;i++) //比较看在b[i]中是否存在与a[i]相同的,存在就不是胜利者 { for(j=0;j<n;j++) { if(strcmp(a[i],b[j])==0) sum[i]=0; } } for(k=0,i=0;i<n;i++) //将全部没出现在失败者里的获胜者 的编号存放在c[]数组里,然后再比较 { if(sum[i]==1) c[k++]=i; } int flag=0; for(i=1;i<k;i++) { if(strcmp(a[c[i]],a[c[i-1]])==0) flag++; //比较看是否只有一个人在真的获胜者之中 } if(flag==k-1) printf("Yes\n"); else printf("No\n"); } return 0; } /************************************************************** Problem: 2229 User: admin Language: C Result: Accepted Time:12 ms Memory:1228 kb ****************************************************************/