← 返回题库
初级

Social Clusters

未完成
初级参考 完整示例代码供参考,建议自己理解后重新输入
def solve(n, data):
    n = int(n)
    parent = list(range(n + 1))
    def find(x):
        while parent[x] != x:
            parent[x] = parent[parent[x]]
            x = parent[x]
        return x
    def union(a, b):
        ra, rb = find(a), find(b)
        if ra != rb:
            parent[ra] = rb
    hobby_rep = {}
    for i, rec in enumerate(str(data).strip().split(','), 1):
        parts = rec.split(':')
        hobbies = list(map(int, parts[1].split()))
        for h in hobbies:
            if h in hobby_rep:
                union(i, hobby_rep[h])
            else:
                hobby_rep[h] = i
    from collections import Counter
    cnt = Counter(find(i) for i in range(1, n + 1))
    sizes = sorted(cnt.values(), reverse=True)
    print(len(sizes))
    print(' '.join(map(str, sizes)))

示例

输入
solve(8, '3:1 2 3,1:1,1:2,1:3,1:4,1:5,2:2 5,1:6')
期望输出
3
6 1 1
Python 代码 🔒 登录后使用
🔒

登录后即可练习

注册免费账号,在浏览器中直接运行 Python 代码