【题目描述】

Byteazar the Dragon 拥有 N 个小猪存钱罐。每一个存钱罐能够用相应的钥匙打开或者被砸开。Byteazar 已经将钥匙放入到一些存钱罐中。现在已知每个钥匙所在的存钱罐,Byteazar 想要买一辆小汽车,而且需要打开所有的存钱罐。然而,他想要破坏尽量少的存钱罐,帮助 Byteazar 去决策最少要破坏多少存钱罐。

读入存钱罐的数量以及相应的钥匙的位置,求出能打开所有存钱罐的情况下,需要破坏的存钱罐的最少数量并将其输出。

【输入描述】

第一行:包括一个整数 N(1≤N≤106),这是 Byteazar the Dragon 拥有的存钱罐的数量

存钱罐(包括它们对应的钥匙)从 1 到 N 编号。

接下来有 N 行:第 i+1 行包括一个整数 x,表示第 i 个存钱罐对应的钥匙放置在了第 x 个存钱罐中。

【输出描述】

输出一个整数,表示能打开所有存钱罐的情况下,需要破坏的存钱罐的最少数量。

【输入输出样例】

输入

4
2
1
2
4

输出

2

【问题解析】

从上面样例来分析,四个存钱罐,钥匙一存在存钱罐二,钥匙二存在存钱罐一,钥匙三存在存钱罐二,钥匙四存在存钱罐四。首先存钱罐四肯定要砸,因为钥匙在同编号存钱罐。其他三个存钱罐存着其他存钱罐的钥匙,而且有连通关系(即打开一个即可打开其他两个),所以可以用并查集来解决。

【代码】

# 两个并查集操作:查询和合并
def find_set(x):      # 有路径压缩优化的查询if x != s[x]:s[x] = find_set(s[x])  # 把集改成根节点的集return s[x]def merge_set(x, y):  # 合并x = find_set(x)y = find_set(y)if x != y: s[x] = s[y]N = int(input())
s = list(range(N+1))  # 初始化集合(每个结点自成一集)
for i in range(1,N+1):x = int(input())merge_set(x, i) # x是存钱罐,i是钥匙
ans = 0    # 存放破坏存钱罐的数量
for i in range(1,N+1):  # s[0]放空处理if s[i] == i:       # 集合i=结点ians += 1
print(ans)   # 集数就是破坏存钱罐的最小数量

请不要相信,胜利就像山坡上的蒲公英一样唾手可得,但是请相信,世上总有一些美好,值得我们全力以赴,哪怕粉身碎骨。

蓝桥杯刷题013——小猪存钱罐(并查集)相关推荐

  1. 蓝桥杯刷题日记 更新到2022/2/5

    蓝桥杯刷题日记 文章目录 蓝桥杯刷题日记 DAY1 1.递归实现指数型枚举 2.递归实现组合型枚举 3.递归实现排列型枚举 Day2 1.八皇后问题 *2.费解的开关 3.带分数 Day3 1.飞行员 ...

  2. ACMoi蓝桥杯刷题网站推荐

    ACM oi 蓝桥杯 刷题网站推荐 ACM刷题oj oi刷题 蓝桥杯刷题oj 刷题网站推荐 刷题的oj越来越多 肯定都有他们自己的特点 今天给各位朋友推荐一下一些网站 新手(中文题) 1.洛谷容易的题 ...

  3. 【蓝桥杯刷题冲刺辅导】掌握递归·DFS解题套路,这一文足以?

    大家好,我是安然无虞. 目录 一.刷题前和铁汁们唠一唠 1.刷题前须知 2.刷题时套路 <1>套路 <2>背下列常用数 ​ <3>投机取巧:根据数据范围确定算法 ​ ...

  4. 蓝桥杯刷题之分享或许会迟到,但绝不会缺席

    不好意思大家.今晚因为需要学习java 所以博客写的有点晚了,但我中午就把这三道题准备好了!!! 第三天的蓝桥杯刷题 回文串 挖掘机技术哪家强 说反话 回文串 大家看这个题目.或许会想到回文数之前,但 ...

  5. Python:每日一题之小猪存钱罐(并查集)

    题目描述 Byteazar the Dragon 拥有 N 个小猪存钱罐.每一个存钱罐能够用相应的钥匙打开或者被砸开.Byteazar 已经将钥匙放入到一些存钱罐中.现在已知每个钥匙所在的存钱罐,By ...

  6. 蓝桥杯刷题以及算法解析的网址

    蓝桥杯题目算法解析参考博客:https://blog.csdn.net/qq_38648587 做题目的网站,有实时模拟比赛:https://oj.ahstu.cc/JudgeOnline/probl ...

  7. 小白要努力之为了蓝桥杯刷题!!!超简单哦!!!

    分享一个歌词直接让我笑喷的歌词----之前我不听歌的,毕竟第一次听到.学习的目的就是找工作,或者创业,但就是一个字"挣钱" 下面直接开始正题吧 首先科普一些知识,全局变量定义的时候 ...

  8. 蓝桥杯刷题007——七段码

    七段码 七段码2020年第十一届蓝桥杯省赛,填空题,lanqiao0J题号595 [问题描述] 七段数码管,一共有7个发光二极管,问能表示多少种不同的字符,要求发光的二极管是相连的. 七段数码管,一共 ...

  9. 蓝桥杯刷题026——蓝桥骑士(二分法)

    蓝桥骑士lanqi ao0J题号1188 题目描述 小明是蓝桥王国的骑士,他喜欢不断突破自我.这天蓝桥国王给他安排了 N 个对手,他们的战力值分别为 a1​,a2​,...,an​,且按顺序阻挡在小明 ...

最新文章

  1. ubuntu 16.04 ROS + kinect v2 安装
  2. 从理论到实践: ORB-SLAM3 Initializer完全解读
  3. python代码计算图像的分辨率
  4. 今天项目中遇到的一个问题:判断新闻Id是否存在
  5. HYSBZ 1010 玩具装箱toy (决策单调DP)
  6. ssm(Spring+Spring mvc+mybatis)——web.xml
  7. 【python基础知识】python输出时出错,UnicodeEncodeError: 'gbk' codec can't encode character '\ue4bf.....
  8. at指令代码 stm32f030_stm32+ESP8266AT指令详细说明
  9. App测试中ios和Android的区别1
  10. MapKit框架使用
  11. nas文件服务器 迁移,换新机器啦,超简单NAS数据迁移方法
  12. 贝壳雕刻者怎样才能创造出更好的作品
  13. 交换机的主要功能和工作特性
  14. 微信短信显示服务器解包异常,图解微信常见帐号异常处理办法
  15. all boot options are tried的问题解决
  16. C语言简易程序设计————6、用*号输出字母C的图案
  17. TMS28027输出PWM波例程解析
  18. 【虚幻引擎】UE4/UE5 材质
  19. 什么是内存屏障? Why Memory Barriers ?
  20. Page “xxx“ has not been registered yet.

热门文章

  1. SQL常用的操作语句
  2. python爬虫采集京东商品评价
  3. ObjectArx尺寸标注设置
  4. 【原创】关于noot的学习笔记
  5. 在此计算机运行应用程序灰色,手把手教你解决win10系统自带应用呈灰色无法打开的处理教程...
  6. [MB855]变砖解决
  7. Q-Learning(强化学习)|机器学习
  8. upnp 二级路由_下载宝作为二级路由折腾记-小白篇 - Padavan - 恩山无线论坛 - Powered by Discuz!...
  9. 2019年,IT行业发展前景
  10. 高博课程第三次作业之轨迹的描绘