zoukankan      html  css  js  c++  java
  • Friends

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3710

    题意:有N个人,M对关系,(a,b)表示a,b互相认识。如果两个不认识的人有不小于K个共同朋友,则这两个人将成为新的朋友。问有多少对能成为新的好朋友。

    思路:枚举所有的人,如果两个人不是朋友的话,就通过两个人共同好友个数判断两个人能否成为朋友,如果两个人成为新朋友则需要重新判断没有成为朋友的人,直至没有新的朋友产生。

     1 #include <stdio.h>
     2 #include <string.h>
     3 using namespace std;
     4 
     5 const int N=120;
     6 int m[N][N];
     7 int main()
     8 {
     9     int t;
    10     scanf("%d",&t);
    11     while(t--)
    12     {
    13         int N,M,K;
    14         scanf("%d%d%d",&N,&M,&K);
    15         memset(m,0,sizeof(m));
    16         int u,v;
    17         for (int i = 0; i < M; i++)
    18         {
    19             scanf("%d%d",&u,&v);
    20             m[u][v] = 1; //u,v两个人是朋友
    21             m[v][u] = 1;
    22         }
    23         int ans = 0;
    24         int flag = 0;
    25         while(1)
    26         {
    27             flag = 0;
    28             for (int i = 0; i < N; i++)
    29             {
    30                 for (int j = 0; j < N; j++)
    31                 {
    32                     if(i==j) continue;
    33                     if (m[i][j]==0)//如果两个人不是朋友
    34                     {
    35                         int cnt = 0;
    36                         int k;
    37                         for (k = 0; k < N; k ++)
    38                         {
    39                             if (m[i][k]==1&&m[j][k]==1)
    40                                 cnt++; //统计两个人共同的朋友个数
    41                             if (cnt >= K)
    42                             {
    43                                 flag = 1;
    44                                 m[i][j] = 1;
    45                                 m[j][i] = 1;
    46                                 ans++;
    47                                 break;
    48                             }
    49                         }
    50                     }
    51                 }
    52             }
    53             if(!flag)//没有新朋友产生
    54                 break;
    55         }
    56         printf("%d
    ",ans);
    57     }
    58     return 0;
    59 }
    View Code
  • 相关阅读:
    浏览器的同源策略及跨域解决方案
    前端开发工具系列
    初始Vue
    form表单组件
    聚合和分组F,Q和事物,cookie,session
    js循环找id
    div模拟textarea文本域轻松实现高度自适应
    prototype原型
    Javascript异步编程方法
    js中map、filter用法
  • 原文地址:https://www.cnblogs.com/lahblogs/p/3587075.html
Copyright © 2011-2022 走看看