STL简单应用

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;

}

 

posted @ 2014-01-21 11:11  晨曦语晴  阅读(210)  评论(0编辑  收藏  举报