BZOJ1529ska Piggy banks
1529: [POI2005]ska Piggy banks
Time Limit: 5 Sec Memory Limit: 64 MB
Submit: 1065 Solved: 496
Description
Byteazar 有 N 个小猪存钱罐. 每个存钱罐只能用钥匙打开或者砸开. Byteazar 已经把每个存钱罐的钥匙放到了某些存钱罐里. Byteazar 现在想买一台汽车于是要把所有的钱都取出来. 他想尽量少的打破存钱罐取出所有的钱,问最少要打破多少个存钱罐.
Input
第一行一个整数 N (1 <= N <= 1.000.000) – 表示存钱罐的总数. 接下来每行一个整数,第 i+1行的整数代表第i个存钱罐的钥匙放置的存钱罐编号.
Output
一个整数表示最少打破多少个存钱罐.
Sample Input
4
2
1
2
4
Sample Output
2
In the foregoing example piggy banks 1 and 4 have to be smashed.
并查集水过。。
2A。。
然而判断的时候是father[i]==i我却写成find(i)==i。。
附上本蒟蒻的代码:
#include<cstdio>
using namespace std;
int n,father[1000001],ans=0;int read()
{int w=0,c=1; char ch=getchar();while (ch<'0' || ch>'9'){if (ch=='-') c=-1;ch=getchar();}while (ch>='0' && ch<='9')w=w*10+ch-'0',ch=getchar();return w*c;
}int find(int x)
{return father[x]==x?x:find(father[x]);
}void merge(int x1,int y1)
{int f1=find(x1),f2=find(y1);if (f1!=f2) father[f1]=f2;
}int main()
{int i,x;n=read();for (i=1;i<=n;i++) father[i]=i;for (i=1;i<=n;i++) x=read(),merge(x,i);for (i=1;i<=n;i++) if (father[i]==i) ans++;printf("%d",ans);return 0;
}
BZOJ1529ska Piggy banks相关推荐
- Taran 缩点【bzoj1529】[POI2005]ska Piggy banks
[bzoj1529][POI2005]ska Piggy banks Description Byteazar 有 N 个小猪存钱罐. 每个存钱罐只能用钥匙打开或者砸开. Byteazar 已经把每个 ...
- BZOJ 1529: [POI2005]ska Piggy banks( 并查集 )
每一连通块砸开一个就可以拿到所有的钱, 所以用并查集求连通块数 ------------------------------------------------------------------- ...
- bzoj1529: [POI2005]ska Piggy banks
Description Byteazar 有 N 个小猪存钱罐. 每个存钱罐只能用钥匙打开或者砸开. Byteazar 已经把每个存钱罐的钥匙放到了某些存钱罐里. Byteazar 现在想买一台汽车于 ...
- BZOJ_P1529 [POI2005]ska Piggy banks(并查集)
BZOJ传送门 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1062 Solved: 494 [Submit][Status][Discuss] Des ...
- [bzoj1529][POI2005]ska Piggy banks 大水题
1529: [POI2005]ska Piggy banks Time Limit: 5 Sec Memory Limit: 64 MB [Submit][Status][Discuss] Desc ...
- #110-【我也不知道这是什么鬼算法】Ska Piggy Banks
Description Byteazar 有 N 个小猪存钱罐. 每个存钱罐只能用钥匙打开或者砸开. Byteazar 已经把每个存钱罐的钥匙放到了某些存钱罐里. Byteazar 现在想买一台汽车于 ...
- [Poi2005]Piggy Banks小猪存钱罐
题目描述 Byteazar有 N 个小猪存钱罐. 每个存钱罐只能用钥匙打开或者砸开. Byteazar已经把每个存钱罐的钥匙放到了某些存钱罐里. Byteazar 现在想买一台汽车于是要把所有的钱都取 ...
- [Poi0504]Piggy Banks小猪存钱罐 (并查集)
Byteazar 有 N 个小猪存钱罐. 每个存钱罐只能用钥匙打开或者砸开. Byteazar 已经把每个存钱罐的钥匙放到了某些存钱罐里. Byteazar 现在想买一台汽车于是要把所有的钱都取出来. ...
- 洛谷·[POI2005]SKA-Piggy Banks 小猪存钱罐【Tarjan 并查集
初见安~这里是传送门:洛谷P3420 题目描述3 Byteazar the Dragon has NN piggy banks. Each piggy bank can either be opene ...
最新文章
- HDU -2243 考研路茫茫——单词情结(AC自动机+矩阵快速幂)
- centos下resin4启动一会儿自动关闭处理
- LeetCode 676. 实现一个魔法字典(哈希)
- ICSharpCode.SharpZipLib 开源压缩库使用示例
- 中文python笔记_python 中文编码笔记
- 多维随机变量与其对应的分布
- XJOI 3877 红蓝字符串
- gamma分布 pytorch_pytorch之添加BN的实现
- unix下source的使用
- js基础-8-浅拷贝和深拷贝
- 系统分析师学习笔记(八)
- 在Arcgis中更改图层的坐标系
- 智能化漏洞挖掘技术总结
- python轻松生成pdf文档
- Hello 内存 cache 主存 外存
- 10Easyx图形编程
- python输入十个数字的成语_【一到十十个数字开头的成语】作业帮
- Android -- AndroidX库
- px,in,mm,pt,dp,dip,sp 之间的换算公式以及区别
- 购房从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少月能还清。设d为300 000元,p为6000元,r为1%。对求得的月份取小数点后一位,对第2位按四舍五人处理。