hdu 2094 产生冠军(水题)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
char s[2010][100],a[100],b[100];
int into[2010];//记录入度
int main()
{
    int n,m,i,j,k;

    while(scanf("%d",&n),n){
        memset(s,0,sizeof(s));
        memset(into,0,sizeof(into));
        for(k=i=1;i<=n;i++){
            scanf("%s%s",a,b);
            for(j=1;j<k;j++){
                if(strcmp(s[j],a)==0) break;
            }
            if(j==k) strcpy(s[k++],a);
            for(j=1;j<k;j++){
                if(strcmp(s[j],b)==0) break;
            }
            if(j==k) strcpy(s[k++],b);//把被打败的人的入度记为1
            into[j]=1;
        }
        for(j=0,i=1;i<k;i++){//查找有几个是没有被打败的
            if(!into[i]) j++;
        }
        if(j==1) printf("Yes\n");//只纯在一个能产生冠军
        else printf("No\n");
    }
    return 0;
}

你可能感兴趣的:(hdu 2094 产生冠军(水题))