初级
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
👑
升级 VIP
解锁全部题目,畅通无阻地学习
- ✓ 解锁全部训练包所有题目
- ✓ 查看完整参考代码和提示
- ✓ 浏览器内直接运行 Python 代码
- ✓ 自动批改 + 进度追踪
30天
¥18
1年
¥99
2年
¥158
3年
¥199