• hdu6152 拉姆齐定理


    hdu6152    Friend-Graph

    题意:给出 n 个人的关系,问是否有 3 个人两两是朋友,或 3 个人两两不是朋友。

    tags:n>=6的就不是,< 的暴力枚举。

    拉姆齐定理的通俗表述
    6 个人中至少存在3人相互认识或者相互不认识。
    该定理等价于证明这6个顶点的完全图的边,用红、蓝二色任意着色,必然至少存在一个红色边三角形,或蓝色边三角形。
    #include<bits/stdc++.h>
    using namespace std;
    #pragma comment(linker, "/STACK:102400000,102400000")
    #define rep(i,a,b) for (int i=a; i<=b; ++i)
    #define per(i,b,a) for (int i=b; i>=a; --i)
    #define mes(a,b)  memset(a,b,sizeof(a))
    #define INF 0x3f3f3f3f
    #define MP make_pair
    #define PB push_back
    #define fi  first
    #define se  second
    typedef long long ll;
    const int N = 3005;
    
    int n, a1[N], a2[N], t1, t2, G[10][10];
    int main()
    {
        int T;  scanf("%d", &T);
        int n, aij;
        while(T--)
        {
            mes(G, 0);
            scanf("%d", &n);
            rep(i,1,n-1)
            {
                rep(j,1,n-i)
                {
                    scanf("%d", &aij);
                    if(n<6 && aij==1) G[i][j+i]=G[j+i][i]=1;
                }
            }
            if(n>=6) { puts("Bad Team!"); continue; }
            bool flag=0;
            rep(i,1,n)
            {
                t1=0, t2=0;
                rep(j,1,n) if(j!=i)
                {
                    if(G[i][j]) a1[++t1]=j;
                    else a2[++t2]=j;
                }
                rep(j,1,t1) rep(l,j+1,t1)
                {
                    if(G[a1[j]][a1[l]]) { flag=1; break; }
                }
                rep(j,1,t2) rep(l,j+1,t2)
                {
                    if(G[a2[j]][a2[l]]==0) { flag=1; break; }
                }
            }
            puts(flag ? "Bad Team!" : "Great Team!");
        }
    
        return 0;
    }
  • 相关阅读:
    理解 Redis(3)
    理解 Redis(2)
    理解 Redis(1)
    git 的基本命令
    使用python实现计算器功能
    python函数说明内容格式错误
    python的小基础
    python去除读取文件中多余的空行
    数论-下属不可以和上司顶嘴!(可能是总结)
    其他-一大堆记录 (20 Dec
  • 原文地址:https://www.cnblogs.com/sbfhy/p/7413164.html
Copyright © 2020-2023  润新知