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