好友关系管理
描述:

现有一个社交网站,其好友推荐策略为:用户A和用户B不是好友,当二人的共同好友数量超过好友推荐阈值m时,就向AB分别推荐为彼此好友。

本题任务为:对设定的m值,给定一组用户及各自好友列表,对这一组用户,反复自动应用上述好友推荐策略后(假设每次推荐都被采纳),求指定用户的最终好友列表。

注:好友关系是双向的,即:如果用户A是用户B的好友,那么用户B一定也是用户A的好友。

写一个程序,在社交网络中实现:

1)初始化社交网络

2)创建用户

3)增加指定两个用户之间的好友关系

4)反复自动应用好友推荐策略后,获取某个用户的好友数量

5)反复自动应用好友推荐策略后,判断某两个用户间是否存在好友关系

说明:

1、一个用户有且只有一个名字,且不存在重名

2、自己和自己不存在好友关系

3、用户名字大小写敏感

4、用户名字字符串长度范围为[1..20]

5、用户总数小于100个

运行时间限制: 无限制
内存限制: 无限制
输入:
五个整数,好友推荐阈值P创建用户数量m,增加指定两个用户之间的好友关系数量M,查询某个用户的好友数量n,查询指定两个用户是否是好友N字符串,每个数据一行,按到上面的顺序依次输入数据,共m+M+n+N行字符串字符串,每个一行,共m+M+n+N行字符串
输出:
输出用户的好友数量,共n个,每个一行;如果用户不存在,输出-1,否则输出好友数量。样例中的用户Jack、Peter、Tom的好友数量都是2个。
输出指定两个用户是否是好友,共N个,每个一行,如果是输出0,否则输出-1。样例中的用户Jack与Peter、Peter与Tom、Jack与Tom都是好友关系,所有输出0。
样例输入:
2 3 3 3 3 //好友推荐阈值2,用户数量为3,增加知道两个用户之间的好友关系数量M,//查询某个用户的好友数量3,查询指定两个用户是否是好友N字符串

 Jack Peter Tom //输入了三个用户Jack Peter Peter Tom Jack Tom //增加了三个好友关系JackPeter Tom //查询了这三个用户的好友数量Jack Peter Peter Tom Jack Tom //查询了这三个好友关系是否存在样例输出: 
         
样例输出:


2 //Jack几个好友,这里就用到了阈值2 //Peter几个好友2 0 //Jack Peter是否好友0 //Peter Tom是否好友0 //Jack Tom是否好友
#include<iostream>
#include<string>
#include<map>
using namespace std;const int maxn = 1010;
bool mp[maxn][maxn];                // mp[i][j] 表示 i 和 j 是否为好友
int num[maxn];                      // num[i] 表示第 i 个人有多少个好友int main(){int P, m, M, n, N, i, j, k;scanf("%d %d %d %d %d", &P, &n, &N, &m, &M);string str1, str2;map<string, int> id;      // 名字转化为idfor(i = 0; i < m; ++i){cin >> str1;id[str1] = i;}for(i = 0; i < M; ++i){cin >> str1 >> str2;mp[id[str1]][id[str2]] = mp[id[str2]][id[str1]] = 1;}bool flag = 1;               // 表示是否会有新的好友对产生int count;                  // 共同好友的个数while(flag){flag = 0;for(i = 0; i < m; ++i){for(j = i + 1; j < m; ++j){if(mp[i][j]){continue;}count = 0;for(k = 0; k < m; ++k){if(k == i || k == j){continue;}if(mp[i][k] && mp[k][j]){++count;}}if(count > P){mp[i][j] = mp[j][i] = 1;flag = 1;  // 有新的好友对产生,需要再次处理}}}}// 统计每个人的好友个数for(i = 0; i < m; ++i){for(j = 0; j < m; ++j){if(mp[i][j]){++num[i];}}}for(i = 0; i < n; ++i){cin >> str1;printf("%d\n", num[id[str1]]);}for(i = 0; i < N; ++i){cin >> str1 >> str2;if(mp[id[str1]][id[str2]]){printf("0\n");}else{printf("-1\n");}}
}

华为机试题 好友关系管理相关推荐

  1. 【牛客网】华为机试题(00、C++版本)

    华为机试题,本来以为对一些基础的程序还是有点信心的:不过不练不知道,一练吓一跳.平时虽然也都码程序,但是一到机试题就各种乱七八的不适应.还是要加强一下练习. 1.字符串最后一个单词的长度 题目描述:计 ...

  2. 华为电脑c语言总是错误,关于华为机试题求代码!解决方法

    关于华为机试题求代码!!! n个字符串,1 如n=3 1.what is local bus? 2.this is local bus. 3.local bus is name sdhfj. 那么最长 ...

  3. 牛客网华为机试题(JavaScript)

    最近在牛客网刷华为机试题,遇到了很多坑,记录: 每一道题目都经过自己实践验证 华为机试题 牛客网在javascript V8引擎下处理输入输出如下: 利用了readline()接收输入的每一行,多行处 ...

  4. 【牛客网-华为机试题目录】持续更新中

    文章目录 博主精品专栏导航 华为机试题:HJ80 整型数组合并(python) 华为机试题:HJ76 尼科彻斯定理(python) 华为机试题:HJ73 计算日期到天数转换(python) 华为机试题 ...

  5. 华为机试题库+题解【C语言版】

    文章目录 前言 1.字符串最后一个单词的长度[***] 描述 输入描述 输出描述 示例 解题代码 2.计算某字符出现次数[****] 描述 输入描述 输出描述 示例 解题代码 3. 明明的随机数[** ...

  6. 华为机试python编程题_牛客网华为机试题之Python解法

    牛客网华为机试题之Python解法 第1题 字符串最后一个单词的长度 a = input().split(" ") print(len(a[-1])) 第2题 计算字符个数 a = ...

  7. 【华为机试题分析-C/C++】知识点分类总结

    专栏地址:https://blog.csdn.net/super828/category_10825347.html 字符串 [华为机试题分析] 1 字符串最后一个单词的长度 [华为机试题分析] 2 ...

  8. 【华为机试题分析】 4 字符串分割

    我的首发平台是公众号[CodeAllen],学习交流QQ群:736386324,本文版权归作者所有,转载请注明出处 [华为机试题分析] 4 字符串分割 #include <stdio.h> ...

  9. 华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典

    文章目录 2023 年用 Python 语言解华为 OD 机试题,一篇博客找全. 华为 OD 机试题清单(机试题库还在逐日更新) 2023 年用 Python 语言解华为 OD 机试题,一篇博客找全. ...

  10. 华为机试题-20190417

    华为某次Java机试题 介绍 1 2 3 介绍 本次机试题,发生时间:2019年04月17日,19:00. 上一次试题,发生时间:2019年04月03日,19:00. 本次机试3题,均AC. 1 题目 ...

最新文章

  1. 线程或进程绑定到特定的cpu
  2. 一级域名和二级域名的区别是什么?作用怎样?
  3. [云炬创业基础笔记] 第三章测试10~12
  4. Javascript网站繁简转换解决方案
  5. 有梦想就有前进的动力
  6. javacurrentmap_Java ConcurrentHashMap.forEach方法代码示例
  7. vue中src文件夹下各文件_Win10下与虚拟机中的linux共享文件夹
  8. Github官方app分析——用户身份验证模块
  9. qq群临时文件转永久
  10. 专注于操作系统25之软盘镜像
  11. 备考进行时!2020年中级通信工程师传输与接入(无线)考试大纲
  12. 北大核心期刊目录2020_音乐舞蹈类核心期刊目录(2020年最新收藏版)
  13. 如何制作标识标志标签
  14. 过滤敏感词汇(trie树实现敏感词过滤)
  15. 感恩节跟进技巧(附邮件模板)
  16. 大象做梦传媒:做好企业年会策划活动执行方案
  17. QGIS教程-4:文本数据的加载
  18. python及pygame雷霆战机游戏项目实战01 控制飞机
  19. Arduino ESP32 SD卡读写实例
  20. ccs中c语言定义布尔常量,CCS中寄存器定义方法

热门文章

  1. 个人作业--数组之首尾相连
  2. 课堂作业之首尾相连子数组值
  3. 计算机及格率用什么函数,excel计算及格率函数的使用教程
  4. c语言学生成绩及格率,c语言百分制输入学生的考试分数统计学生及格率
  5. [Azure - VNet] Azure网络带宽的性能测试
  6. 盘点那些效果酷炫的大数据看板
  7. Android Studio导致的假死机问题的解决
  8. 应届生实习需要注意哪些方面?
  9. 有隐藏分区如何激活win7旗舰版
  10. 中小板上市要走那些流程