(每日一练51379)题目名称:交际圈

文盲老顾
WEB应用领新星创作者
博客专家认证
2023-06-05 16:54:53

小明参加了个大型聚会。聚会上有n个人参加,我们将他们编号为1..n,有些人已经互相认识了,有些人还不认识。聚会开始后,假设A跟B认识,A会给所有他认识的人介绍B,原先跟A认识,但不认识B的人,都会在此时,跟B互相认识。当所有人都把自己认识的人介绍一遍后,此时n个人就会形成k个交际圈,同一个交际圈中,两两互相认识,不同的交际圈之间,互相不认识 问题:当所有人都把自己认识的人介绍一遍后,形成了多少个交际圈

其实这个题目,还有天然气订单,蚂蚁家族,这三个题目都是查并集的题目,如果没有超时问题,上次天然气订单65939题目的方法就能用,可惜那个算法太浪费时间了。所以只能从新写一份,优化一下。

n,m = map(int,input().split())
arr = [list(map(int,input().split())) for _ in range(m)]
z = {v:{v} for v in range(1,n + 1)}
t = {}
for i in range(m):
    a,b = sorted(arr[i])
    c,d = a,b
    while c in t:
        c = t[c]
    while d in t:
        d = t[d]
    c,d = sorted([c,d])
    if c != d:
        z[c] |= z[d]
        del z[d]
        t[d] = c
print(len(z))
...全文
124 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

321

社区成员

发帖
与我相关
我的任务
社区描述
主要用于技术交流,包括但不限于 .net,mssql,js,css,python,算法,运维。也可以晒最新技术,美图,运动等。最后,如果有问题,可以提问,老顾能帮忙的会尽量帮忙哦。
前端sqlserverasp.net 技术论坛(原bbs) 北京·西城区
社区管理员
  • 文盲老顾
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧