zoukankan      html  css  js  c++  java
  • HDU 6152

    Friend-Graph

    Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 3072    Accepted Submission(s): 1334

    Problem Description
    It is well known that small groups are not conducive of the development of a team. Therefore, there shouldn’t be any small groups in a good team.
    In a team with n members,if there are three or more members are not friends with each other or there are three or more members who are friends with each other. The team meeting the above conditions can be called a bad team.Otherwise,the team is a good team.
    A company is going to make an assessment of each team in this company. We have known the team with n members and all the friend relationship among these n individuals. Please judge whether it is a good team.
    Input
    The first line of the input gives the number of test cases T; T test cases follow.(T<=15)
    The first line od each case should contain one integers n, representing the number of people of the team.(n3000)

    Then there are n-1 rows. The ith row should contain n-i numbers, in which number aij represents the relationship between member i and member j+i. 0 means these two individuals are not friends. 1 means these two individuals are friends.
    Output
    Please output ”Great Team!” if this team is a good team, otherwise please output “Bad Team!”.
    Sample Input
    1 4 1 1 0 0 0 1
    Sample Output
    Great Team!
    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    bool a[3005][3005];
    int main()
    {    int T;
        scanf("%d",&T);
        while(T>0){
            int flag=1;
            int N;
            scanf("%d",&N);
            for(int i=0;i<N;i++){
                for(int j=0;j<N;j++){
                    a[i][j]=0;
                }
            }
            for(int b=0;b<N;b++)
                for(int d=b+1;d<N;d++){
                    scanf("%d",&a[b][d]);
                    a[d][b]=a[b][d];
                }
            for(int c=0;c<N;c++)
                for(int q=c+1;q<N;q++)
                    for(int k=q+1;k<N;k++){
                        int ans=a[c][q]+a[q][k]+a[c][k];
                        if(ans==3||ans==0){
                            flag=0;
                            c=N;
                            q=N;
                            break;
                        }
                    }
            if(flag) printf("Great Team!
    ");
            else printf("Bad Team!
    ");
    
        T--;
        }
        return 0;
    }
    1、这个二维数组a只能用bool定义,用int定义会超,bool只占一个字节
    2、bool的取值、和int可以直接相互转换
    3、用ans把三个取值加起来,会比直接比较精简
    4、注意三个for那里的q、k初始化的值
     
    改进:
    根据Ramsey定理(组合数学的知识),因为当人数大于等于6时,答案一定是否,所以,可以大大缩小空间
    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    bool a[5][5];
    int main()
    {    int T;
        scanf("%d",&T);
        while(T>0){
            int flag=1;
            int N;
            scanf("%d",&N);
            if(N>5){
                flag=0;
            }else{
            for(int i=0;i<N;i++){
                for(int j=0;j<N;j++){
                    a[i][j]=0;
                }
            }
            for(int b=0;b<N;b++)
                for(int d=b+1;d<N;d++){
                    scanf("%d",&a[b][d]);
                    a[d][b]=a[b][d];
                }
            for(int c=0;c<N;c++)
                for(int q=c+1;q<N;q++)
                    for(int k=q+1;k<N;k++){
                        int ans=a[c][q]+a[q][k]+a[c][k];
                        if(ans==3||ans==0){
                            flag=0;
                            c=N;
                            q=N;
                            break;
                        }
                    }
            }
            if(flag) printf("Great Team!
    ");
            else printf("Bad Team!
    ");
    
        T--;
        }
        return 0;
    }
  • 相关阅读:
    npm 中设置环境NODE_ENV变量,判断失败打印process.env.NODE_ENV确实是"development",但是判断process.env.NODE_ENV === "development" 是false
    NuxtJS踩坑日记,一步一步爬出我自己挖的坑。
    Django模型层1
    Django模板层2
    Centos 6.5 版本的下载教程
    上传文件到github
    CSS完整
    前端之JavaScript
    CSS
    多表 查询习题
  • 原文地址:https://www.cnblogs.com/dudulukeyxian/p/10622831.html
Copyright © 2011-2022 走看看