Friend-Graph 1003

来源:互联网 发布:淘宝卖家手机号采集器 编辑:程序博客网 时间:2024/06/04 17:55


Friend-Graph      


              


题意:判定一个无向图是否有三个点的团或者三个点的独立集。


比赛的时候都没看这题,队友A  的;


放在这里mark 一个理论;

1. Ramsey theorem      


所以 n>=6  的就不用考虑了,这样就不用考虑怎样才不爆内存了,做法就是直接暴力;



#pragma comment(linker, "/STACK:1024000000,1024000000")#include<string>#include<cstdio>#include<cstring>#include<cmath>#include<iostream>#include<queue>#include<stack>#include<vector>#include<algorithm>#define maxn 10using namespace std;int a[maxn][maxn];int main(){    int T,n,x;    scanf("%d",&T);    while(T--)    {        memset(a,0,sizeof a);        int flag=0;        scanf("%d",&n);        if(n>=6)  flag=1;        if(n==1||n==2)  flag=2;        for(int i=1;i<n;i++)        {            for(int j=1;j<=n-i;j++)            {                scanf("%d",&x);                if(flag||x==0)  continue;                a[i][i+j]=1;                a[j+i][i]=1;            }        }        if(!flag)        {            for(int i=1;i<=n;i++)            {               for(int j=1;j<=n;j++)               {                  for(int k=1;k<=n;k++)                  {                      if(i==k||i==j||j==k)  continue;                      if(a[i][j]==1&&a[i][k]==1&&a[j][k]==1)  {     flag=1;   break;  }                      if(a[i][j]==0&&a[i][k]==0&&a[j][k]==0)  {     flag=1;   break;  }                  }                  if(flag)  break;                }                if(flag)   break;            }        }        if(flag==1)  puts("Bad Team!");        else    puts("Great Team!");    }    return 0;}


原创粉丝点击