#P1492. 2024.9.4-秋招-第2题-好友推荐系统

2024.9.4-秋招-第2题-好友推荐系统

题目内容

你正在为一个社交网络平台开发好友推荐功能。

平台上有NN个用户(每个用户使用11NN的整数编号),同时系统中维护了用户之间的好友关系。

为了推荐新朋友,平台决定采用“共同好友数量”作为衡量两个用户之间相似度的标准。

系统根据输入用户编号KK,输出与此用户KK相似度最高的前LL个用户IDID,来推荐给用户KK

相似度定义:两个用户非好友,两个用户的相似度为拥有的共同好友数(例如用户AA和用户BB,只有共同好友CCDD,相似度=22)

输入描述

第一行包含四个整数NNMMKKLL,分别表示用户的数量(NN),好友记录条数(MM)、查询的用户编号(KK)和推荐的好友数量(LL)。

接下来MM行,每行包含两个整数编号XXYY,表示编号为XXYY用户是好友。

1.输入格式都是标准的,无需考虑输出异常场景(不会包含用户和自己是好友的输入,例如11 11)

2.用户数不超过10241024,用户编码最大1024410244

3.好友记录数不超过1024010240

输出描述

根据输入KKLL,输出和用户KK相似度最高的LL个用户编码。

1.输出相似度最高的前LL个用户编码,按照相似度从高到低排序

2.如果有相似度相同的可能好友,按照用户编号从小到大排序

3.如果推荐的好友个数不足LL个,则推荐与用户KK无共同好友关系的用户(陌生人)作为可能好友;如果 推荐仍不满足LL个用户,剩余推荐用户编码使用00来占位

样例1

输入

6 7 3 2
1 2
1 3
2 3
3 4
3 5
4 5
5 6

输出

6 0

解释

输入包含了66个用户,77条好友记录,给用户IDID编号为33的用户推荐22个好友

输出只有编号为66的用户可能是编号33用户的可能好友;

尝试推荐与编号33用户无共同好友的其他用户,由于除编号为66的用户之外,其他用户和编号33用户都是好友,所以找不到陌生人作为推荐的第二个用户;

推荐结果不足22个用户,所以推荐的第二个用户编码使用00来占位补足。

样例2

输入

8 11 1 3
1 2
1 3
2 3
3 4
3 5
4 5
5 6
6 7
7 8
1 8
2 7

输出

7 4 5

解释

输入包含了88个用户,1111条好友记录,给用户IDID编号为11的用户推荐33个好友。

按照相似度排序推荐给用户11的相关好友:77 44 55