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;

}

  

你可能感兴趣的:(ZOJ)