【BFS+hash】The Social Network

【信息科学与工程学】计算机科学与自动化-——第十五篇云计算 11 算法篇 在百万级虚拟机、百万级租户的超大规模云环境中,核心算法挑战包括:挑战维度具体问题算法需求技术复杂度规模性​百万级对象并发管理分布式算法、分区算法极高(NP-hard问题)多租户​租户间隔离与资源共享公平性算法、隔离算法高(多目标优化)动态性​资源需求实时变化自适应算法、在线算法高(实时决策)异构性​硬件/负载/需求差异分类算法、匹配算法中高(多维度优化)经济性​资源利用率与成本平衡优化算法、博弈论算法高(多目标博弈)以下是按领域分类的详细算法列表:算法名称数学建模表达核心思想时间复杂度适用场景推理步骤首次适 阅读详情

The Social Network

Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others)
Total Submission(s): 1795    Accepted Submission(s): 555


Problem Description
The social network system (SNS) helps people to keep connecting with their friends. Every user in SNS has a friends list. The user can read news posted by the users in his friends list. Friend relation is symmetric - if A is a friend of B, B is always a friend of A.

Another important function in SNS is friend recommendation. One effective way to recommend friends is recommend by mutual friends. A mutual friend between two users A and B, is a user who is a friend of both A and B. A user can not be a friend of himself. For a specific user A, the system will recommend the user who is not himself or his friend, and has mutual friends with A. If more than one such user exists, recommend the one has most mutual friends with A. If still a tie exists, output all of them.
 

Input
The first line is a integer T (T≤100), the number of test case.
The beginning of each test case is two integers N and Q, the number of friend relationship and the number of query. 1 ≤ N, Q ≤ 1000
The following N lines each contain two different names separated by a single space. Each name consisted by only lowercase letters, and its length is less than or equal to 15. This means the two users are friends. No friend relationship will be given more than once.
The following Q lines each describe a query. Each line contain one user name. The data guarantee that this name appears at least once in above N lines.
 

Output
For each case, you should output one line containing “Case k: ” first, where k indicates the case number and counts from one. Then for each query, output one line, contains one or more names of recommended friends, separate by a single space, sorted by alphabetical order. If no persons can be recommended, output one line contains “-”.
 

Sample Input
  
1 10 11 hongshu digua yingying hongshu xmm hongshu huaxianzi xmm tangjiejie huaxianzi xhmz yingying digua xhmz zt tangjiejie xmm lcy notonlysuccess ljq hongshu digua yingying xmm huaxianzi tangjiejie xhmz zt lcy notonlysuccess ljq
 

Sample Output
  
Case 1: xhmz yingying digua digua tangjiejie yingying hongshu lcy zt xmm hongshu huaxianzi hongshu huaxianzi - -
 

Source


概括题意:找不是自己朋友的朋友的朋友。

1:用map给每个姓名一个数字映射。

2:姓名上限要开2*MAX,可能是每对姓名都不相同。

3:其他就是BFS的搜索的,尽可能优化吧。


#include<cstdio>
#include<algorithm>
#include<map>
#include<vector>
#include<string>
#include<cstring>
using namespace std;
#define MAX 2005
map<string,int> mat;//姓名数字映射
vector<int> num[MAX];//某人的朋友
string name[MAX],out[MAX];//name存姓名,out存输出的姓名
int countx[MAX];//计数
bool flag[MAX];//是否是查找人的朋友
int cnt,u,v;
int main()
{
    int T,N,Q;
    scanf("%d",&T);
    for(int ti=1;ti<=T;++ti)
    {
            char s1[25],s2[25];
            string si;
            cnt=0;
            scanf("%d%d",&N,&Q);
            for(int i=0;i<N;++i)
                num[i].clear();
            mat.clear();
            for(;N--;)
            {
                    scanf("%s %s",s1,s2);
                    si=string(s1);  
                    if(mat.count(si))
                          u=mat.find(si)->second;  
                    else  
                    {  
                          u=cnt;
                          name[cnt]=si;  
                          mat.insert(make_pair(si,cnt++));  
                    }  
                    si=string(s2);  
                    if(mat.count(si))
                          v=mat.find(si)->second;  
                    else  
                    {
                          v=cnt; 
                          name[cnt]=si;    
                          mat.insert(make_pair(si,cnt++));  
                    }
                    num[u].push_back(v);
                    num[v].push_back(u);
            }
            printf("Case %d:\n",ti);
            for(;Q--;)
            {
                    scanf("%s",s1);
                    si=string(s1);
                    if(!mat.count(si)) continue;
                    memset(countx,0,sizeof(countx));
                    memset(flag,false,sizeof(flag));
                    int tmp=mat.find(si)->second;
                    for(int i=0;i<num[tmp].size();++i)
                        flag[num[tmp][i]]=true;
                    for(int i=0;i<cnt;++i)
                        if(flag[i])
                                   for(int j=0;j<num[i].size();++j)
                                               countx[num[i][j]]++;
                    int maxx=0;
                    for(int i=0;i<cnt;++i)
                        if(countx[i]>maxx&&(!flag[i])&&(i!=tmp))
                           maxx=countx[i];
                    if(maxx==0)  
                    {   
                        printf("-\n");  
                        continue;  
                    }  
                    int tmt=0;
                    for(int i=0;i<cnt;++i)
                        if(countx[i]==maxx&&(!flag[i])&&(i!=tmp))
                           out[tmt++]=name[i];
                    sort(out,out+tmt);
                    for(int i=0;i<tmt;++i)
                    {
                            if(i!=0) printf(" ");
                            printf("%s",out[i].c_str());
                    }
                    printf("\n");
            }
    }
    return 0;
}


来源:http://blog.youkuaiyun.com/ACM_Ted

【信息科学与工程学】计算机科学与自动化-——第十五篇云计算 12 公有云里的“多Region + 多AZ“ 02 运营算法01 算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)云厂商提高闲置资源利用率。算法复杂度为O(N),N为实例数量。 阅读详情

相关推荐

【信息科学与工程学】【安全领域】第八十三篇 云安全解决方案02

企业中“搞人”与“搞事情”常见问题的分析框架。我将选取4个典型场景,每个场景都从实际管理现象出发,逐步推导出数学模型、参数设定及关联知识。

weixin_49199313的博客 324

软件构造Lab1-SocialNetwork

要求 Implement and test a FriendshipGraph class that represents friendships in a social network and can compute the distance between two people in the graph. An auxiliary class Person is also required ...

weixin_42548511的博客 321

【信息科学与工程学】【审计学】第一篇 招投标领域审计算法01

在每个关键流程节点(如文件上传、开标唱标、评标结束), 计算该环节所有电子文件的数字指纹(如SHA-256哈希值), 并将指纹和元数据(时间、操作人)上链存证。:从发票、合同中提取材料品名、规格、采购价、时间、地点。:对每个供应商, 提取其在历史投标中的行为序列特征, 如:中标率、与特定伙伴同时投标率、自身高报价次数、在伙伴中标项目中的“弃标”或“无效标”次数。:监控开标、评标现场音视频, 识别异常情绪(激烈争吵)、敏感关键词(“打点”、“关照”)、异常物品传递、私下交流等违规行为。

weixin_49199313的博客 816

【map+字典序】hdu 4039 The Social Network

【map+字典序】hdu 4039 The Social Network题目链接:hdu 4039 The Social Network题目大意模拟一个社交网络系统,先给你n个朋友关系,对每个人,系统会推荐给他一些人给他交朋友,系统推荐的是:他朋友的朋友且与他不是朋友,而且只推荐他最多共同朋友的朋友,如果会推荐多个,按照字典序从小到大输出,如果一个也不推荐输出“-” 熟练map映射:字典序本身

Hacker_vision 1150

【信息科学与工程学】计算机科学与自动化——第六十六篇 算子篇 第一章 通用算子01 多模态数据(图形/图像/文本/语音)中推断人类内在状态、策略、动机和利益的算法算子知识库

编号领域算法/方法算子名称算子的数学方程式/表达复杂度 (示例)关联知识11量子场论正则量子化产生/湮灭算符对易关系: [â_p, â†_q] = δ⁽³⁾(p​ - q)应用于态空间,计算复杂度取决于截断福克空间,粒子数表象,二次量子化12统计力学蒙特卡洛模拟马尔可夫链转移算子T(s → s‘) :满足细致平衡条件 π(s)T(s→s’)=π(s‘)T(s’→s)收敛到平衡分布需 ~O(τ), τ为相关时间细致平衡,Metropolis-Hastings准则,重要性采样13电磁学边界元法单层势/双层势算子

weixin_49199313的博客 308

【信息科学与工程学】计算机科学与自动化——第一百六十八篇 云资源编排器和网络/安全编排器01

参数符号名称类型含义取值范围默认值/典型值单位来源/设定方式Cj​服务器容量Float服务器 j 的最大可用资源量(如 vCPU 核数)(0,+∞)64核硬件配置cij​调度代价系数Float将任务 i 分配到服务器 j 的单位资源消耗代价(归一化)(0,1]0.8无量纲根据网络距离、能耗等计算xij​分配决策变量Integer (0/1)任务 i 是否调度到服务器 j{0,1}——算法输出B带宽需求Float任务需要的网络带宽[0,Cbw​]100Mbps业务需求Dmax​最大时延Float任务允许的最大

weixin_49199313的博客 22

软件构造课程 Blog-1

软件构造课程 Blog-1 写在最开始  没有认为我也会有一天来更新自己的blog,那么既然机会,正好开始学习像Git记录代码的成长过程一样记录自己的一个变化,希望将来一天Blog+Github=OfferBlog+Github=OfferBlog + Github = Offer。另外更好的跟别人分享自己的一些理解和交流一些经验。这第一次写Blog就来简单记录一下Lab1中遇到的一些问题...

Zmy_hit的博客 3294

统信UOS/麒麟Kylin OS下利用pyenv实现Python多版本开发环境搭建指南

本文详细介绍了在统信UOS和麒麟Kylin OS国产操作系统下使用pyenv搭建Python多版本开发环境的完整指南。从系统环境准备、pyenv定制安装到Python版本编译实战,提供了针对国产CPU架构的特殊优化方案和常见问题解决方法,帮助开发者高效管理不同Python版本需求。

sea99的博客 1052

软件构造 Lab1

实验目标: 本次实验通过求解四个问题,训练基本 Java 编程技能,能够利用 Java OO 开 发基本的功能模块,能够阅读理解已有代码框架并根据功能需求补全代码,能够 为所开发的代码编写基本的测试程序并完成测试,初步保证所开发代码的正确性。 另一方面,利用 Git 作为代码配置管理的工具,学会 Git 的基本使用方法。 ⚫ 基本的 Java OO 编程 ⚫ 基于 Eclipse IDE 进行 J...

LanHBSan的博客 547

基于FPGA的PCIe核系列:FPGA root模式生成工程例子分析(1)

一、 PCIE系统架构 1.1 PCIE分层结构 PCIE结构 1.2 TLP包 四种TLP类型。 Memory (内存空间操作) IO (IO空间操作) Configuration (配置操作) Message (信息操作) 四种类型TLP,如果有需要响应,称为Non-Posted TLP,如果没有需要响应,称为Posted TLP。 TLP包类型 1.2.1 TLP结构 TLP数据格式 1.2.2 Header各个字段的含义 Header格式 ...

huangshanhu的博客 3434

Qcom camera hal简介

Qcom camera hal简介

weixin_42136255的博客 7770

Lab_1实验总结(软件构造)

1 实验环境配置一开始多次下载JDK,然后安装Eclipse均失败。在网上搜索尝试解决办法,最后发现是用了JDK9.0.最后卸载JDK与Eclipse并下载JDK8重新安装才得以成功。Git在谷歌浏览器上也是多次下载被禁止,最后不得不使用IE浏览器才下载成功。 2 实验过程1.1 Magic Squares对文本文件里给的能构成正方形的数进行检验,如果每一行与每一列的和均相等且对角线上的和也相等,...

qq_38875710的博客 2342

Gazebo仿真UUV水下机器人:从环境搭建到避障算法实战

本文详细介绍了使用Gazebo仿真平台进行UUV水下机器人开发的全流程,涵盖从环境搭建、uuv_simulator配置、传感器集成到核心避障算法实战。通过搭建水下仿真实验室并实现基于激光雷达数据的反应式避障算法,为水下机器人算法验证与开发提供了高效、低成本的解决方案。

weixin_28840591的博客 265

The-social-network

题目: HDU - 4039 The Social Network The social network system (SNS) helps people to keep connecting with theirfriends. Every user in SNS has a friends list. The user can read news posted bythe users i

佳梦作快马 诗酒趁年华 351

NXP KW47蓝牙MCU低功耗实测:从8μA睡眠到5年续航的优化实战

在物联网和嵌入式系统开发中,低功耗设计是决定电池供电设备续航能力的关键技术。其核心原理在于通过事件驱动、状态机管理和精细的电源域控制,使设备在空闲时进入深度睡眠,仅在需要时快速唤醒工作,从而将平均电流从毫安级降至微安级。这项技术的工程价值在于能够实现纽扣电池供电设备长达数年的使用寿命,广泛应用于智能家居传感器、可穿戴设备、资产追踪和工业监测等领域。以NXP KW47系列无线MCU为例,其集成的Arm Cortex-M33双核与专用射频单元,配合多级睡眠模式和高效DC-DC转换器,为超低功耗蓝牙应用提供了硬件

weixin_30162121的博客 257

arcgis计算栅格平均值

打开FC栅格数据和非水体矢量数据 利用矢量数据提取对应栅格的非水体部分 2.1打开空间分析工具à提取分析à按掩膜提取 输入对应栅格数据和矢量数据 2.2提取结果如下 进行计算FC平均值 3.1打开空间分析工具à多元分析à波段集统计 输入对应栅格和输出路径 3.2统计结果如下 ...

Z_W_H_的博客 5371

[CareerCup] 10.2 Data Structures for Large Social Network 大型社交网站的数据结构

  10.2 How would you design the data structures for a very large social network like Facebook or Linkedln? Describe how you would design an algorithm to show the connection, or path, between two peop...

weixin_33694172的博客 97

Microsemi Libero系列教程(四)——PLL的使用

文章目录PLL是什么Libero中PLL的使用官方文档 系列教程:Microsemi Libero系列教程 PLL是什么 PLL(Phase Locked Loop): 为锁相回路或锁相环,用来统一整合时钟信号,使高频器件正常工作,如内存的存取资料等。PLL用于振荡器中的反馈技术。 许多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步。一般的晶振由于工艺与成本原因,做不到很高的频率...

whik1194的博客 7214

10.1 Codeforces Round #590 (Div.3)

Codeforces Round #590 (Div. 3):点击进入新世界 总结: 第二次实时打cf,刚开始四分钟就且切了A题,后面看了B1 B2 难度改变对思路没有影响,一开始思路是对的,但是用hash数组没考虑数组下标爆1e9,两题提交都出现RE,还以为是数组开小了,改了数组大小再次提交依旧RE后,才发现hash数组的毛病,后面改用map直接切了B1 B2, 开局半小时切三题(没有失误的话应...

放荡者的茶会 483

uniapp - 解决控制台提示“同步资源失败,未得到同步资源的授权,请停止运行后重新运行,并注意手机上的授权提示”,uniApp安卓/苹果App真机运行调试显示同步资源失败,无任何授权提示且无法连接

uni-app,报错,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果安卓app,提示错误解决,HbuilderX,uniapp同步资源失败,未得到同步资源的授权,请停止运行后重新运行,并注意手机上的授权提示同步失败,安卓基座调试,没有反应,真机没有提示怎么办,如何解决这个问题,苹果ios手机,电脑模拟器运行,adb连接,连接失败,报错出错,uniapp真机运行的时候显示同步资源失败,未得到同步资源的授权,plugins里面没有tools,找不到tools,还是不行,重新打基座

🏆 前端领域优质创作者 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

图数据结构详解:从核心概念到邻接矩阵与邻接表的存储实现

图作为一种基础且强大的数据结构,是描述对象间复杂关系的数学模型,其核心由顶点和边构成。理解图的原理,关键在于掌握其有向/无向、带权/无权等基本概念,以及连通性、度等性质,这些特性决定了图在建模现实世界关联时的技术价值。在工程实践中,图的存储结构选择直接影响算法效率,主要分为邻接矩阵和邻接表两种方式。邻接矩阵以二维数组直接表示顶点间关系,查询速度快但空间复杂度高,适用于稠密图或需要频繁判断边存在的场景;而邻接表则为每个顶点维护一个邻居列表,空间效率优异且便于遍历邻居,是处理社交网络、微服务调用链等稀疏图问题的

weixin_34268753的博客 373

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

软件构造lab1

Lab1 实验要求 训练基本Java编程技能,能够利用Java OO开发基本的功能模块,能够阅读理解已有代码框架并根据功能需求补全代码,能够为所开发的代码编写基本的测试程序并完成测试,初步保证所开发代码的正确性。 另一方面,利用Git作为代码配置管理的工具,学会Git的基本使用方法。 Magic Squares 1.本任务重点在于I/O。 采用缓冲字符输入流BufferedReader FileR...

weixin_42501269的博客 494

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

HDU 4039 The Social Network bfs

算了下复杂度好像是n^3 就感觉不大好做。结果n^31a。。。 #include #include #include #include #include #include #include #include using namespace std; #define eps 1e-9 #define PI acos(-1.0) #define N 1005 #define inf

九野的博客 1555

软件构造Lab1-Social Net

继续接着之前的博客,来分享一下Lab1剩余的部分,也就是Social Net。 这个可以说是最简单的了,我们要做的就是完成一个图的数据结构,并实现相应的方法即可。 下面分享一下我的数据结构: 按照实验已经给出的,我们要实现的java文件为FriendshipGraph.java 那么主类就是FriendshipGraph,Person和Relation是辅助FriendshipGraph实现的两个...

桂花載酒 601

【二分搜索】 hdu4282 A very hard mathematic problem

A very hard mathematic problem 题目:http://acm.hdu.edu.cn/showproblem.php?pid=4282 题意: X^Z + Y^Z + XYZ = K, (X 1)。告诉你最后K(0 的值,问符合这个等式的X,Y,Z的组合有多少种 题解:因为幂次的增长速度比较快,我们可以枚举X和Z,然后二分搜索是否存在对应的Y。对于A的B次方我

Ted's 游乐园 3248
上一篇: 【hash】Conformity
下一篇: 【BFS】Prime Path
ACM_Ted
博客等级 码龄15年 122粉丝 208原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值