http://acm.hdu.edu.cn/showproblem.php?pid=2094
以前都不知道这道题该怎么过,今天听同学说了,其实思想很简单。用了最近在学的STL就把它给A了。
思想:讲输入的全部人都放入一个容器base中,将全部输的人放入另一个容器base1中,最后将两个容器的size相减一下就可以了。得到1就说明能产生冠军。 因为要是能产生冠军的话,全部人中只有冠军是没有输过的,其他的人肯定是输过的!所以,容器base的大小肯定比base1大1。
My code:
#include<iostream>
#include<algorithm>
#include<string>
#include<set>
using
namespace std;
int
main()
{
int
n;
set<string>base;
set<string>base1;
char
a[101],b[101];
while(scanf("%d",&n),n)
{
while(n--)
{
scanf("%s
%s",a,b);
base.insert(a);
base.insert(b);
base1.insert(b);
}
if(base.size()-base1.size()==1)
printf("Yes\n");
else
printf("No\n");
base.clear();
base1.clear();
}
return
0;
}