2017CCPC 网络选拔赛 1003 Friend-Graph

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


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

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

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


#include
#include
#include
#include
#include
#include
#include
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!"<



你可能感兴趣的:(其他,模拟)