2017CCPC 网络选拔赛 1003 Friend-Graph

来源:互联网 发布:溢价域名 编辑:程序博客网 时间:2024/06/01 14:20

http://acm.hdu.edu.cn/showproblem.php?pid=6152


给一张图,0代表不是朋友,1代表是朋友,问存不存在至少有三人互相不是朋友或者是互相是朋友的情况。

模拟暴力,套三层循环,枚举三个不同的人来判断,注意要剪枝避免重复计算。

关键:这道题里 朋友的朋友不是朋友,天哪。。。


#include<iostream>#include<cstring>#include<cmath>#include<algorithm>#include<iomanip>#include<map>#include<cstdio>using namespace std;bool ma[3333][3333];int main(){    int t;    cin>>t;    while(t--)    {       int n;       int i,j,k;       int fr;       scanf("%d",&n);       memset(ma,0,sizeof(ma));       for(i=1;i<=n;i++)       ma[i][i]=1;       for(i=1;i<=n-1;i++)       {           for(j=1;j<=n-i;j++)           {               scanf("%d",&fr);               ma[i][j+i]=ma[j+i][i]=fr;        }       }       bool flag=1;        for(i=1;i<=n;i++)       {           for(j=i;j<=n;j++)           {               if(j!=i)               {                   for(k=j;k<=n;k++)                   {                       if(k!=j)                       {                          if(ma[i][j]==1&&ma[i][k]==1&&ma[j][k]==1)                          {                              flag=0;                              break;                          }                            if(ma[i][j]==0&&ma[i][k]==0&&ma[j][k]==0)                        {                            flag=0;                            break;                        }                    }                }                if(flag==0)break;            }        }        if(flag==0)break;       }       if(flag) cout<<"Great Team!"<<endl;       else cout<<"Bad Team!"<<endl;    }    return 0;}