• HDU2094 产生冠军(拓扑排序)


    题目连接

    分析:

    想了很多很多。全部WA了。。没想到是找入度为0的点。。如果个数为1个Yes,否则No。。(因为这题仅仅是找冠军而已)

    #include <stdio.h>
    #include <string.h>
    
    #define MAXN 1005
    
    int n, top_name, indegree[MAXN];
    char name[MAXN][15];
    
    void Init(){
        top_name = 0;
        memset(indegree, 0, sizeof(indegree));
    }
    
    int find_str(char *s){
        int i;
        for(i=0; i<top_name; i++){
            if(strcmp(name[i], s) == 0) break;
        }
        if(i==top_name){
            strcpy(name[top_name++], s);
        }
        return i;
    }
    
    int main(){
        int i, k, cnt, pos1, pos2;
        char s1[15], s2[15];
    
        while(scanf("%d", &n) == 1 && n){
            Init();
            for(i=0; i<n; i++){
                scanf("%s %s", s1, s2);
                pos1 = find_str(s1), pos2 = find_str(s2);
                indegree[pos2]++;
            }
    
            cnt = 0;
            for(i=0; i<top_name; i++){
                if(indegree[i] == 0){k = i; cnt++;}
                if(cnt > 1) break;
            }
    
            if(cnt == 1) printf("Yes\n");
            else printf("No\n");
        }
    
        return 0;
    }
  • 相关阅读:
    javaMap
    javaCollections
    java线程
    mysql插入,删除
    mysql基础(1)
    javaSet,Date
    中青杯数学建模大赛
    javaJDBC
    中秋记事~~项目开发
    太高兴了,今天有人送我吃月饼!
  • 原文地址:https://www.cnblogs.com/tanhehe/p/2934234.html
Copyright © 2020-2023  润新知