你正在为一个社交网络平台开发好友推荐功能。
平台上有N个用户(每个用户使用1到N的整数编号),同时系统中维护了用户之间的好友关系。
为了推荐新朋友,平台决定采用“共同好友数量”作为衡量两个用户之间相似度的标准。
系统根据输入用户编号K,输出与此用户K相似度最高的前L个用户ID,来推荐给用户K。
在这个问题中,我们需要为社交网络平台上的用户提供好友推荐功能。具体而言,输入包括用户总数 (N)、好友关系总数 (M)、待推荐用户编号 (K) 以及需要推荐的好友数量 (L)。随后会有 (M) 行数据,表示用户之间的好友关系。我们需根据用户 (K) 的共同好友数量来计算其与其他用户的相似度,推荐相似度最高的 (L) 个用户,且推荐用户不能是用户 (K) 的好友。推荐结果需按相似度从高到低排序,若相似度相同,则按用户编号从小到大排序。如果找到的候选用户少于 (L) 个,则需要补充与用户 (K) 没有任何共同好友的其他用户,如果仍不足 (L) 个,则用 (0) 补位。通过这个推荐功能,可以帮助用户发现新的好友,增强社交网络的互动。
题目要求给目标用户推荐好友,首先被推荐对象不能是目标用户的好友。因此我们在读入用户关系时,标记一下与目标用户互为好友的用户。
之后,枚举所有未被标记用户,他们都是待定对象。而与目标用户相似度,就是与其相连的边中,被标记的点的数量。因此统计后再排序即可。