ZOJ 3710 friends(暴力 枚举 水)

 

题意:有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\n", ans);
    }
    return 0;
}

  

posted @ 2014-08-19 00:22  sola94  阅读(115)  评论(0编辑  收藏  举报