• hdu 2094 产生冠军


    题意:给出n对选手姓名,每对表示前者赢后者,求整场比赛是否有冠军;

    思路:将名字用数字表示,离散化。然后就是裸裸的拓扑排序。仅仅需推断初始时入度为0的是否唯一;

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int n,m,i,j,k,con;
    int mm[1001][1001],indegree[500010];
    char s1[500010],s2[500010],match[1001][101],pos1,pos2;
    void tuopu()
    {
        int i,j,k;
        int c=0;
        for(i=0;i<con;i++)
        {
            if(indegree[i]==0) c++;
        }
        if(c==1) printf("Yes
    ");
        else printf("No
    ");
    }
    int main()
    {
        while(scanf("%d",&n)!=EOF)
        {
            if(n==0) break;
            con=0;
            memset(s1,0,sizeof(s1));
            memset(s2,0,sizeof(s2));
            memset(match,0,sizeof(match));
            memset(indegree,0,sizeof(indegree));
            memset(mm,0,sizeof(mm));
            for(i=0;i<n;i++)
            {
                scanf("%s%s",s1,s2);
                for(j=0;j<con;j++)
                {
                    if(strcmp(match[j],s1)==0)
                    {
                        pos1=j;
                        break;
                    }
                }
                if(j==con) strcpy(match[con++],s1),pos1=con-1;
                for(j=0;j<con;j++)
                {
                    if(strcmp(match[j],s2)==0)
                    {
                        pos2=j;
                        break;
                    }
                }
                if(j==con) strcpy(match[con++],s2),pos2=con-1;
                if(!mm[pos1][pos2])
                {
                    mm[pos1][pos2]=1;
                    indegree[pos2]++;
                }
            }
             tuopu();
        }
        return 0;
    }
    


  • 相关阅读:
    Python 基础(二)
    Python 入门
    DNS
    PXE自动化安装CentOS7和CentOS6
    AIDE及sudo应用
    SSH应用
    KickStart自动化安装Linux
    初见鸟哥
    数组ARRAY
    SSH用法
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/6717820.html
Copyright © 2020-2023  润新知