Python:每日一题之小猪存钱罐(并查集)
题目描述
Byteazar the Dragon 拥有 N 个小猪存钱罐。每一个存钱罐能够用相应的钥匙打开或者被砸开。Byteazar 已经将钥匙放入到一些存钱罐中。现在已知每个钥匙所在的存钱罐,Byteazar 想要买一辆小汽车,而且需要打开所有的存钱罐。然而,他想要破坏尽量少的存钱罐,帮助 Byteazar 去决策最少要破坏多少存钱罐。
读入存钱罐的数量以及相应的钥匙的位置,求出能打开所有存钱罐的情况下,需要破坏的存钱罐的最少数量并将其输出。
输入描述
第一行:包括一个整数 N(1 ≤ N ≤ 10^6),这是 Byteazar the Dragon 拥有的存钱罐的数量。
存钱罐(包括它们对应的钥匙)从 1 到 N 编号。
接下来有 N 行:第 i+1 行包括一个整数 x,表示第 i 个存钱罐对应的钥匙放置在了第 x 个存钱罐中。
输出描述
输出一个整数,表示能打开所有存钱罐的情况下,需要破坏的存钱罐的最少数量。
输入输出样例
示例 1
输入
4
2
1
2
4
输出
2
运行限制
- 最大运行时间:5s
- 最大运行内存: 256M
思路:
参考代码:
def hebin(x,y): #合并x=find_set(x)y=find_set(y)if (x!=y):s[x]=s[y]
def find_set(x): #查找 if (x!=s[x]):s[x]=find_set(s[x])return s[x]n=int(input())
s=list(range(n+1)) #并查集初始化
ans=0
for i in range(1,n+1):hebin(i,int(input())) #将每个存钱罐和它里面对应能打开的存钱罐编号进行组合
for i in range(1,n+1):if s[i]==i:ans+=1 #此时的存钱罐编号i是并查集树的根节点,ans自增
print(ans)
Python:每日一题之小猪存钱罐(并查集)相关推荐
- delphi 多个线程 多个进度条_多线程有哪些优点?- Python每日3题(多线程专题)
这里是Python7编程挑战-多线程专题! 每天学习3个问题,包括初级,中级,高级问题各1个. 今天是第2天!一起来呀,就7天! 每日3题是麦叔的面试系列专题之一,每天包括初级,中级,高级难度题目各一 ...
- linux scrapy 定时任务_写爬虫一定要会scrapy?-Python每日3题(爬虫专题)
这里是Python7编程挑战-爬虫专题! 每天学习3个问题,包括初级,中级,高级问题各1个. 今天是第2天!一起来呀,就7天! 每日3题是麦叔的面试系列专题之一,每天包括初级,中级,高级难度题目各一道 ...
- Python 每日一题(一元二次方程求解)
Python 每日一题:锻炼Python语法的运用,思维逻辑的锻炼,算法能力的培养. 题目: 输入一个一元二次方程的系数 a, b, c,求解方程的根. 分析: 1.一元二次方程标准形式: (a ≠ ...
- Python 每日一题(猴子吃桃问题)
Python 每日一题:锻炼Python语法的运用,思维逻辑的锻炼,算法能力的培养. 题目: 一个猴子第一天摘下若干个桃子,当即吃了1半,还不过瘾,又多吃了1个.第二天早上吃了剩下桃子的1半,以后每天 ...
- python每日一题今天的答案_python每日一题总结1
每日一题1 1. 写出python中import 导入库的几种常见写法 举例:import math from math imourt sqrt 每日一题2 1. print 1000L 的结果 答 ...
- python3 多线程 threading.local 代理_threading.local的作用?Python每日3题(多线程专题)...
这里是Python7编程挑战-多线程专题! 每天学习3个问题,包括初级,中级,高级问题各1个. 今天是第5天!一起来呀,就7天!每日3题是麦叔的面试系列专题之一,每天包括初级,中级,高级难度题目各一道 ...
- 旧瓶装新酒系列-Python每日多题(一)
项目结束,终于有时间静下心来好好学习Python了.对于Python,我还是新手,只大概看过一遍<A byte of Python>.准备直接做些小的练习,题目就照搬Java的和C的经典课 ...
- python每日一题公众号_python每日一题总结4
20180609 qzd 每日一题14 输入三个整数x,y,z,请把这三个数由小到大输出. my code x=int(input('x:')) y=int(input('y:')) z=int(in ...
- 蓝桥杯刷题013——小猪存钱罐(并查集)
[题目描述] Byteazar the Dragon 拥有 N 个小猪存钱罐.每一个存钱罐能够用相应的钥匙打开或者被砸开.Byteazar 已经将钥匙放入到一些存钱罐中.现在已知每个钥匙所在的存钱罐, ...
最新文章
- R语言set.seed函数的意义及实战
- C#基础总结之四List-Hashtable-冒泡排序
- 检测xcode工程中配置信息是否正确
- 【渝粤题库】广东开放大学 PHP动态网站设计 形成性考核
- 463. 岛屿的周长
- Visual.Assist.X 菜单汉化
- (转) 深度模型优化性能 调参
- 03、三种简单的计时器
- 数字电子技术基础(十三):时序逻辑电路(状态机)(移位寄存器、计数器、信号发生器)
- Mac安装telnet工具和使用
- 月圆之夜,更新了一下1024客户端【强烈推荐更新】
- kali系统修改中文
- docker---dockerfile 编写优化
- 看到“东大研究生”吐槽华为cpu,海思,请知道的人科普一下吧,我抛砖引玉
- Python 生成一组随机数列表
- 陈景润定理的数学证明何处寻?
- bzoj 3197: [Sdoi2013]assassin 树哈希+树形dp+费用流
- 手写demo了解vue响应式原理,订阅模式,观察者模式
- 不花钱,模拟登录古诗中文网
- java游戏管理器 闪退_手游频繁崩溃”闪退”? 从程序上找原因