hdu 2094 产生冠军(STL,set)

题目

//把所有的出现的名字开始默认都为冠军(1),然后输了的置为0,表示不为冠军,最后统计不为0的,

//当有且只有一个不为0的,这个就为冠军,否则,不能产生冠军.

//以上思路来自别人的博客。。

//set可以去重,所以这里用了set

//set可以去重,并且自动排序
//数set元素个数要用 s.size() 的啊
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<string>
#include<math.h>
#include<set>
using namespace std;

//#define IN freopen("c:\Users\nit\desktop\input.txt", "r", stdin)    
//#define OUT freopen("c:\Users\nit\desktop\output.txt", "w", stdout)   
//int gcd(int a,int b){return b==0?a:gcd(b,a%b);}

int main()
{
    int n,i;
    string a,b;
    set<string>s1;
    set<string>s2;
    while(scanf("%d",&n),n)
    {
        s1.clear();
        s2.clear();
        for(i=0;i<n;i++)
        {
            cin>>a>>b;
            s1.insert(a);//
            s1.insert(b);//把所有的都放在s1
            s2.insert(b);//把输过的都放在s2
        }
        if(s1.size()- s2.size() == 1)//比较s1和s2的不重复元素个数
            printf("Yes
");
        else
            printf("No
");
    }
    return 0;
}
View Code
一道又一道,好高兴!
原文地址:https://www.cnblogs.com/laiba2004/p/3819815.html