BZOJ 1529: [POI2005]ska Piggy banks( 并查集 )

每一连通块砸开一个就可以拿到所有的钱, 所以用并查集求连通块数 

-------------------------------------------------------------------

#include<bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < n; i++)
#define clr(x, c) memset(x, c, sizeof(x))
using namespace std;
const int maxn = 1000009;
int fa[maxn], n, ans;
int find(int x) {
return x == fa[x] ? x : fa[x] = find(fa[x]);
}
void unite(int x, int y) {
int a = find(x), b = find(y);
fa[a] = b;
ans -= a != b;
}
int main() {
freopen("test.in", "r", stdin);
cin >> n;
ans = n;
rep(i, n) fa[i] = i;
rep(i, n) {
int v;
scanf("%d", &v);
unite(--v, i);
}
cout << ans << "\n";
return 0;
}

------------------------------------------------------------------- 

 

1529: [POI2005]ska Piggy banks

Time Limit: 5 Sec  Memory Limit: 64 MB
Submit: 959  Solved: 437
[Submit][Status][Discuss]

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.

HINT

Source

 

转载于:https://www.cnblogs.com/JSZX11556/p/4670197.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471755.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

horizon流程图_项目实施流程和规范模板(测试方向)

转自&#xff1a;http://blog.51cto.com/xqtesting/20523121. 简介1.1 编写背景随着公司业务的快速发展&#xff0c;技术部面临的基础技术研发、客户系统建设、新产品研发、老旧系统改造等各类建设项目越来越多。但在众多技术人员参与、并发项目交互的情况下&#xff0c;如何定…

android menu xml 属性,Android中Menu类型及常见属性说明

Android系统里面有3种类型的菜单&#xff1a;options menu&#xff0c;contextmenu&#xff0c;sub menu。一、optionsmenu按Menu键就会显示&#xff0c;用于当前的Activity。它包括两种菜单项&#xff1a;因为options menu在屏幕底部最多只能显示6个菜单项&#xff0c;这些菜单…

LeetCode 1980. 找出不同的二进制字符串

文章目录1. 题目2. 解题1. 题目 给你一个字符串数组 nums &#xff0c;该数组由 n 个 互不相同 的二进制字符串组成&#xff0c;且每个字符串长度都是 n 。 请你找出并返回一个长度为 n 且 没有出现 在 nums 中的二进制字符串。 如果存在多种答案&#xff0c;只需返回 任意一个…

#时间预测算法_改进的智慧交通系统出行时间预测算法

引用Chowdhury N K, Leung C K S. Improved travel time prediction algorithms for intelligent transportation systems[C]//International Conference on Knowledge-Based and Intelligent Information and Engineering Systems. Springer, Berlin, Heidelberg, 2011: 355-3…

Navicat for MySQL数据库管理工具

官网下载地址&#xff1a;http://www.navicat.com/download/navicat-for-mysql //如图所示成功建立连接 Host Nmae/Ip Adress:localhost为本地连接&#xff0c;建立远程数据库连接时设置对应ip即可。 1&#xff09;.新建表插入中文数据可以出现&#xff1a; 导致程序直接关闭&a…

LeetCode 1981. 最小化目标值与所选元素的差(DP)

文章目录1. 题目2. 解题1. 题目 给你一个大小为 m x n 的整数矩阵 mat 和一个整数 target 。 从矩阵的 每一行 中选择一个整数&#xff0c;你的目标是 最小化 所有选中元素之 和 与目标值 target 的 绝对差 。 返回 最小的绝对差 。 a 和 b 两数字的 绝对差 是 a - b 的绝对…

android c 11 编译,Android NDK r9b和编译C 11

对不起,以下应该是评论,而不是回答 – 因为我不知道你的代码有什么问题,但是你可以做些什么来弄清楚自己&#xff1a;这是我最小的Android.mk&#xff1a;LOCAL_PATH : $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE : hello-jniLOCAL_SRC_FILES : HelloJni.cppLOCAL_LDLIB…

hdu 5312 数学

转载于:https://www.cnblogs.com/cnblogs321114287/p/4676747.html

协程asyncio_Asyncio深入浅出

Asyncio是一个异步编程的框架&#xff0c;可以解决异步编程&#xff0c;协程调度问题&#xff0c;线程问题&#xff0c;是整个异步IO的解决方案。在学习asyncio之前&#xff0c;我们先来理清楚同步/异步的概念&#xff1a;同步是指完成事务的逻辑&#xff0c;先执行第一个事务&…

android qml 菜单,QML - ListView项目,用于显示菜单

当用户点击项目时&#xff0c;我正在寻找关于在列表项目下显示菜单的一些提示和指示 .如果我有这样的ListModel&#xff1a;ListModel {ListElement {name: "Bill Smith"number: "555 3264"}ListElement {name: "John Brown"number: "555 8…

随笔2

目前三件事 1.去除强迫思维 2.追女生 3.工作 这三件对于我来说都是非常困难的&#xff0c;慢慢的解决&#xff0c;不急&#xff0c;一定要坚持&#xff0c;不管遇到什么困难。。。转载于:https://www.cnblogs.com/zzyoucan/p/4678466.html

python 迭代器、生成器、yield、iter

文章目录1. 迭代器2. 生成器3. 标准库3.1 过滤3.2 映射3.3 合并3.4 排列组合3.5 重新排列4. yield from5. 可迭代的归约函数6. iter 还可以传入2个参数7. 生成器当成协程learn from 《流畅的python》 1. 迭代器 所有生成器都是迭代器&#xff0c;因为生成器完全实现了迭代器接…

java微信学习 接入

现在实习的公司要做微信开发&#xff0c;然而一直没安排任务&#xff0c;所以一直在看微信接口&#xff0c;记录下学习的内容 微信开发肯定要看的就是微信公众平台开发者文档&#xff0c;上面有每种接口的调用格式&#xff0c;刚开始学习的时候自己申请了一个订阅号&#xff0c…

钉钉老版本下载3.31_钉钉3.3.1老版本官方下载-钉钉3.3.1旧版本PC版官方版-东坡下载...

钉钉是由阿里巴巴研发的一款办公聊天工具&#xff0c;是新一代的团队沟通模式&#xff0c;该软件内置强大的办公功能&#xff0c;主要功能有传输文件&#xff0c;发送文字、语音、图片等&#xff0c;消息阅读以及外出打卡等功能&#xff0c;在这里为大家提供的是钉钉3.3.1旧版本…

Android 引用模块中的类,解决Android项目中找不到Module中的封装类或引用的第三方类库...

在日常开发中&#xff0c;现在越来越流行模块化开发&#xff0c;这就需要将项目分成不同的Module进行同时开发&#xff0c;最后在app层进行整合调用&#xff0c;但是不少开发人员都因为在build中添加关联代码&#xff0c;而找不到Module中封装的方法或引用的类库。下面就给大家…

LeetCode 1976. 到达目的地的方案数(迪杰斯特拉 Python 优先队列)

文章目录1. 题目2. 解题1. 题目 你在一个城市里&#xff0c;城市由 n 个路口组成&#xff0c;路口编号为 0 到 n - 1 &#xff0c;某些路口之间有 双向 道路。 输入保证你可以从任意路口出发到达其他任意路口&#xff0c;且任意两个路口之间最多有一条路。 给你一个整数 n 和…

shell:读取文件的每一行内容并输出

写法一&#xff1a;#!/bin/bash while read linedoecho $linedone < file(待读取的文件)写法二&#xff1a; #!/bin/bash cat file(待读取的文件) | while read linedoecho $linedone写法三&#xff1a;for line in cat file(待读取的文件)doecho $linedone以上三种写法都…

c++ sendmessage 鼠标 坐标是相对自身吗_【科普】你真的足够了解五轴加工吗?看完豁然开朗!...

近年来五轴联动数控加工中心在各领域得到了越来越广泛的应用。在实际应用中&#xff0c;每当人们碰见异形复杂零件高效、高质量加工难题时&#xff0c;五轴联动技术无疑是解决这类问题的重要手段。越来越多的厂家倾向于寻找五轴设备来满足高效率、高质量的加工。但是&#xff0…

32g内存 android开发,16G走开 我要32G内存的安卓手机

对于很多用户来说&#xff0c;在准备换手机的时候最纠结的莫过于是选择16G的还是32G的&#xff0c;毕竟价格相差好几百&#xff0c;但这里给你的建议是买32G的&#xff0c;即使贵点&#xff0c;但长远来说&#xff0c;是利大于弊的&#xff0c;为什么这么说呢&#xff0c;且听小…

python 上下文管理器、 else 块、@contextmanager

文章目录1. else2. with上下文管理器3. contextlib模块实用工具4. contextmanager 装饰器learn from 《流畅的python》 1. else for/else、while/else 和 try/else 前两者 只有在 没有被break 时&#xff0c;才会运行 else try 块中没有异常抛出时 才运行 else for i in ran…