[HDOJ6152] Friend-Graph(拉姆齐定理)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6152

拉姆齐定理,R(3,3)=6,说明6个人以上的时候,一定会存在规模为3的团或者3个团。

所以暴力枚举6点以下的结果,其余bad就好。不小心mle了几发。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 const int maxn = 11;
 5 int n;
 6 int G[maxn][maxn];
 7 
 8 int main() {
 9     // freopen("in", "r", stdin);
10     int T;
11     scanf("%d", &T);
12     while(T--) {
13         scanf("%d", &n);
14         memset(G, 0, sizeof(G));
15         if(n > 6) {
16             for(int i = 1; i <= n; i++) {
17                 for(int j = i+1; j <= n; j++) {
18                     scanf("%d", &G[1][1]);
19                 }
20             }
21             printf("Bad Team!\n");
22             continue;
23         }
24         for(int i = 1; i <= n; i++) {
25             for(int j = i+1; j <= n; j++) {
26                 scanf("%d", &G[i][j]);
27                 G[j][i] = G[i][j];
28             }
29         }
30         bool exflag = 0;
31         for(int i = 1; i <= n; i++) {
32             for(int j = i + 1; j <= n; j++) {
33                 for(int k = j + 1; k <= n; k++) {
34                     if(G[i][j] && G[j][k] && G[k][i]) exflag = 1;
35                 }
36             }
37         }
38         if(exflag) printf("Bad Team!\n");
39         else {
40             for(int i = 1; i <= n; i++) {
41                 for(int j = i + 1; j <= n; j++) {
42                     for(int k = j + 1; k <= n; k++) {
43                         if(!G[i][j] && !G[j][k] && !G[k][i]) exflag = 1;
44                     }
45                 }
46             }
47             if(exflag) printf("Bad Team!\n");
48             else printf("Great Team!\n");
49         }
50     }
51     return 0;
52 }

 

posted @ 2017-08-19 20:58  Kirai  阅读(192)  评论(0编辑  收藏  举报