产生冠军

http://acm.hdu.edu.cn/showproblem.php?pid=2094

View Code
 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std ;
 4 #define maxn 1005
 5 int main()
 6 {
 7     int n, i, j ;
 8     char a[maxn][100], b[maxn][100] ;
 9     int c[maxn], sum[maxn] ;
10     while(cin>>n,n!=0)
11     {
12         memset(sum, 0, sizeof(sum)) ;//0表示败
13         for(i=0; i<n; i++)
14         {
15             cin>>a[i]>>b[i] ;
16             sum[i] = 1 ;//1表示赢
17         }
18         for(i=0; i<n; i++)
19         for(j=0; j<n; j++)
20         {
21             if(strcmp(a[i],b[j])==0)
22             sum[i] = 0 ;
23         }
24         int k = 0 ;
25         for(i=0; i<n; i++)
26         {
27             if(sum[i]==1)
28             c[k++] = i ;
29         }
30         int count = 0 ;
31         for(i=1; i<k; i++)
32         {
33             if(strcmp(a[c[i]],a[c[i-1]])==0)
34             count++ ;
35         }
36         if(count==k-1)//只有一个人是冠军,且没有败过
37         cout<<"Yes"<<endl ;
38         else
39         cout<<"No"<<endl ;
40     }
41     return 0 ;
42 }

 

 

posted @ 2013-02-26 22:08  yelan@yelan  阅读(124)  评论(0编辑  收藏  举报