//传送门:http://acm.hdu.edu.cn/showPRoblem.php?pid=2094#include <queue>#include <functional>#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <stack>#include <vector>#include <set>#include <map>#include <string>#include <cmath>#include <cstdlib>#include <ctime>#include <assert.h>using namespace std;#define N 1005//思路: 有且仅有一个胜者不曾败过,则其为冠军string s1[N],s2[N];int main(){ int n; while(scanf("%d",&n),n){ for(int i=0;i<n;i++){ cin>>s1[i]>>s2[i]; } int sum=0; for(int i=0;i<n;i++){ //遍历胜者 bool flag = 0; for(int j=i+1;j<n;j++){ //后面是否有重复的 if(s1[i]==s1[j]){ //有则跳过 flag = 1; break; } } if(flag) continue; for(int j=0;j<n;j++){ //该胜者是否在败者中出现 if(s1[i]==s2[j]){ //若出现了,则不计算 flag = 1; break; } } if(!flag) sum++; //该胜者未曾败过 } if(sum==1) printf("Yes/n"); //有且仅有一个胜者未曾败过 else printf("No/n"); }}
新闻热点
疑难解答