题意:有n个人 m对关系 如果两个人之间有不少于k个好友的话就会成为朋友 问 长此以往会有多少对新关系形成
思路:一直暴力到没有新关系为止
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 100 + 1; bool g[maxn][maxn]; int main( ) { int ncase; scanf("%d", &ncase); while(ncase--) { int n, m, k; scanf("%d%d%d", &n, &m, &k); memset(g, false, sizeof(g)); for(int i = 0; i < m; i++) { int u, v; scanf("%d%d", &u, &v); g[u][v] = g[v][u] = true; } int ans = 0; bool flag = true; while(flag) //一直找到不能再合并为止 { flag = false; for(int i = 0; i < n; i++) { for(int j = i + 1; j < n; j++) { if(g[i][j]) continue; int cnt = 0; for(int l = 0; l < n; l++) if(g[i][l] && g[j][l]) cnt++; if(cnt >= k) { g[i][j] = g[j][i] = true; ans++; flag = true; } } } } printf("%d ", ans); } return 0; }