2017CCPC 网络选拔赛 1003 Friend-Graph

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;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值