1. 程式人生 > >[HDOJ6152] Friend-Graph(拉姆齊定理)

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

clas lag spa const 暴力枚舉 eof () graph for

題目鏈接: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 }

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