HDU 6152 Friend-Graph(定理)

来源:互联网 发布:中科院分词算法 编辑:程序博客网 时间:2024/06/15 01:03

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6152
题意:给你三角矩阵的朋友关系,如果有大于等于三个人是朋友或者不是,Bad;反之,Great
思路:卡内存的题啊!有定理“任意6个人中,必有3个人互相认识或有3个人互相都不认识”,所以大于等于6不用写了,小于的暴力判,数组不能开大了。
代码:

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int N = 105;int e[N][N];int main(){    int t,n,x;    scanf("%d",&t);    while(t--)    {        memset(e,-1,sizeof(e));        scanf("%d",&n);        if(n >= 6)        {            for(int i = 1;i <= n-1;i++)                for(int j = i+1;j <= n;j++)                    scanf("%d",&x);            printf("Bad Team!\n");        }        else        {            for(int i = 1;i <= n-1;i++)                for(int j = i+1;j <= n;j++)                    scanf("%d",&x),e[i][j] = x;            bool flag = true;            for(int k = 1;k <= n;k++)                for(int i = 1;i <= n;i++)                    for(int j = i+1;j <= n;j++)                        if((e[i][k] + e[k][j] + e[i][j] == 3) || (!e[i][k] && !e[k][j] && !e[i][j]))                            flag = false;            if(flag)                printf("Great Team!\n");            else                printf("Bad Team!\n");        }    }    return 0;}
原创粉丝点击