ZOJ 3710 Friends(数学啊 )
来源:互联网 发布:周杰伦杭州演唱会知乎 编辑:程序博客网 时间:2024/06/05 23:50
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3710
Alice lives in the country where people like to make friends. The friendship is bidirectional and if any two person have no less than k friends in common, they will become friends in several days. Currently, there are totally n people in the country, and m friendship among them. Assume that any new friendship is made only when they have sufficient friends in common mentioned above, you are to tell how many new friendship are made after a sufficiently long time.
Input
There are multiple test cases.
The first lien of the input contains an integer T (about 100) indicating the number of test cases. Then T cases follow. For each case, the first line contains three integersn, m, k (1 ≤ n ≤ 100, 0 ≤ m ≤ n×(n-1)/2, 0 ≤ k ≤ n, there will be no duplicated friendship) followed by m lines showing the current friendship. The ith friendship contains two integers ui, vi (0 ≤ ui, vi < n, ui ≠ vi) indicating there is friendship between person ui and vi.
Note: The edges in test data are generated randomly.
Output
For each case, print one line containing the answer.
Sample Input
34 4 20 10 21 32 35 5 20 11 22 33 44 05 6 20 11 22 33 44 02 0
Sample Output
204
Author: ZHUANG, Junyuan
Contest: The 10th Zhejiang Provincial Collegiate Programming Contest
题意:
有 n 个人,其中一些人是朋友,如果某两个不是朋友的人之间满足有 k 个共同的朋友,那么这两个人也可认为是朋友,
给出 m 个初始关系,问最后会有多少个通过共同朋友而成为朋友的生成关系。
PS:
枚举两个不同的人(不是朋友)组合,遍历第三者,如果与两人都有朋友关系的人足够多(>=k),就添加关系并计数。
这样的遍历要一直走,直到遍历一次不生成新的关系为止。
代码如下:
#include <stdio.h>#include <cstring>int map[147][147];int main(){int t;scanf("%d",&t);while(t--){int a, b;int i, j, h;int n, m, k;memset(map,0,sizeof(map));scanf("%d%d%d",&n,&m,&k);for(i = 1; i <= m; i++){scanf("%d%d",&a,&b);map[a][b] = 1;map[b][a] = 1;}int ans = 0;for(int f = 0; ; f++){int flag = 0;for(i = 0; i < n; i++){for(j = i+1; j < n; j++){if(map[i][j]){continue;}int cont = 0;for(h = 0; h < n; h++){if(map[i][h] && map[j][h]){cont++;}}if(cont >= k){flag = 1;//printf(" %d %d\n",i,j);map[i][j] = 1;//xin peng youmap[j][i] = 1;ans++;}}}if(flag == 0){break;}}printf("%d\n",ans);}return 0;}
- ZOJ 3710 Friends(数学啊 )
- zoj 3710 Friends(数学)
- ZOJ 3710 Friends(暴力)
- ZOJ 3710 Friends(枚举)
- ZOJ Problem Set - 3710 Friends(暴力)
- ZOJ-3710(Friends)
- zoj 3710 Friends
- zoj 3710 Friends
- ZOJ 3710 Friends 暴力
- zoj 3710 Friends
- Friends zoj 3710
- ZOJ 3710 Friends
- zoj 3710 Friends
- ZOJ 3710 Friends
- ZOJ 3710 Friends
- ZOJ 3710Friends(暴力)
- ZOJ 3710 Friends
- ZOJ 3710 Friends
- jQuery.i18n使用过程中IE浏览器一直报脚本错
- 常用小函数集锦
- HDU 3183 A Magic Lamp(贪心+RMQ)
- 小蚁摄像头 APP扫描添加原理
- MFC常用方法总结二
- ZOJ 3710 Friends(数学啊 )
- Fragment监听KeyEvent事件的两种方式
- C#学习第一天 入门简介
- hdu 1509 Windows Message Queue
- 鹰牌双管猎枪单管猎枪图片15504036447
- [LeetCode]Set Matrix Zeroes
- Docker学习笔记 — Docker网络总结
- yate学习--./yate/tools/log_rotate.sh
- YUV422P(UYVY)转换到RGB , 基于Opencv2.4.10