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;
    }
  • 相关阅读:
    腾讯TBS加载网页无法自适应记录
    filter过滤器实现验证跳转_返回验证结果
    Oracle不连续的值,如何实现查找上一条、下一条
    springmvc.xml 中 <url-pattern></url-pattern>节点详解
    spring拦截器-过滤器的区别
    (转)spring中的拦截器(HandlerInterceptor+MethodInterceptor)
    @Value("${xxxx}")注解的配置及使用
    mybatis BindingException: Invalid bound statement (not found)
    spring声明式事务管理方式( 基于tx和aop名字空间的xml配置+@Transactional注解)
    Spring事务管理详解_基本原理_事务管理方式
  • 原文地址:https://www.cnblogs.com/dudulukeyxian/p/10622831.html
Copyright © 2011-2022 走看看