拘泥于处理(数学)集合和子集的练习
Stuck on exercise dealing with (mathematical) sets and sub-sets
我已经考虑了好几天了,似乎真的找不到b)的任何答案。就像这样,伙计们:
Johnny上了一门非常重要的课程,他想要很多朋友们通过在Facebook上发帖了解他的成功(//是愚蠢的我知道)Johnny知道N个用户,用从1到N.他们之间有m个友谊,形式为i,j,其中i和j是用户;n、 m!=0。用户不能与自己和友谊告诉每个用户都是另一个用户的朋友。Johnny想知道他的团队中哪些人最"有联系"朋友列表,这样他的帖子将在脸书上广泛传播。对于这,强尼不得不找出最大的一个子集知名用户。在这个子集中,每个用户至少有k个朋友,他们也是存在于子集(k!=0)中。输入:N、m和k在同一行,由单个空间分隔,也是2*m个自然数的序列(可以在区间[1,N]输出中找到(标准:a)每个用户的好友数量(从1到N)的成员最大的用户子集,具有每个用户所在的属性这一组至少有k个朋友(同样,可以在特定子集)。如果给定k没有这样的子集,则打印"否">
对于这个问题,你不能使用任何专门的库,所以我被卡住了符合标准。
同样,这是关于集合的数学概念,而不是C++专用集合、多集合等库。
a) 很容易,但正如我所说,b)给我带来了一些麻烦。
Examples: 1)
Input: 5 5
2 1 2 5 1 3 2 4 5 1 4
Output:
a) 3 2 1 2 2 b) 1 4 5
2) Input:
5 5 3
1 2 5 1 3 2 4 5 1 4
Output:
a) 3 2 1 2 2
b) NO
and 3) Input:
11 18 3
1 8 4 7 7 10 11 10 2 1 2 3 8 9 8 3 9 3 9 2 5 6 5 11 1 4 10 6 7 6 2 8 11 7 11 6
Output:
a) 3 4 3 2 2 4 4 4 3 3 4
b) 2 3 6 7 8 9 10 11
如有任何帮助,我们将不胜感激。此外,很抱歉内容过于庞大,必须粗略翻译。:)
有很多
这个问题需要计算具有m条边的N节点图的k核。有一个简单的算法:当最低阶的顶点的阶数小于k时,删除它。剩下的顶点就是所需的子集。使用bucket队列来保持节点按程度排序,以实现高效操作。
仔细想想,我们只需要跟踪(1)每个节点的度(2)哪些节点的度小于k。在未测试的Python:中
import collections
def kcore(edges, k):
neighbors = collections.defaultdict(set)
for u, v in edges:
neighbors[u].add(v)
neighbors[v].add(u)
bad = {u for (u, neigh) in neighbors.items() if len(neigh) < k}
while bad:
u = bad.pop()
for v in neighbors[u]:
neighbors[v].remove(u)
if len(neighbors[v]) < k:
bad.add(v)
del neighbors[u]
return set(neighbors)
相关文章:
- 加速C++练习2.4
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- C++ 独特指针练习的向量
- 在子集化后将包含索引号的列表列表映射到标准索引序列
- 显示字符串的集合和子集
- 转换器练习:跳过 if 语句和 if 语句
- 节目练习直播C++
- 所以我正在为我的学校作业练习继承,但我无法正确实施标题保护
- 我正在尝试一个傻瓜 C++ 练习,我遇到了一个错误,说类 'GraduateStudent' 没有任何名为 'advisor' 的字段
- 用于子集字符串的 Rcpp 函数
- 为什么我的子集和方法不正确?
- 计算总和为 x 的所有整数子集(包括负数)
- 练习多线程
- 返回不停止函数,递归函数问题?(编程练习,动态规划,Levenshtein 回溯)
- 在尝试使用递归查找集合子集的总数时,我遇到了分割错误
- 从小于或等于某个 N 的数字列表中最小化或找到 n 个理想的子集和
- 使用 Rcpp 的高效矩阵子集
- C++ 随机数的字符串练习
- 进行 SFINAE 练习时编译错误
- 拘泥于处理(数学)集合和子集的练习