Content

给定无向图的 \(n\) 个点的父亲节点,求无向图的联通块个数。

数据范围:\(1\leqslant n\leqslant 10^4\)。

Solution

并查集模板题。

我们将在当前节点和它的父亲节点连在一起,然后看不同的祖先节点的个数即可。

没学过并查集的同学建议先去做 P3367 【模板】并查集

Code

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
using namespace std; int n, a[10007], f[10007], vis[10007], ans; int getfa(int x) {
return (x == f[x]) ? x : f[x] = getfa(f[x]);
}
void unionn(int x, int y) {
x = getfa(x), y = getfa(y);
if(x != y) f[x] = y;
} int main() {
scanf("%d", &n);
for(int i = 1; i <= n; ++i) f[i] = i;
for(int i = 1; i <= n; ++i) {
int x;
scanf("%d", &x);
unionn(x, i);
}
for(int i = 1; i <= n; ++i)
if(!vis[getfa(i)]) ans++, vis[getfa(i)] = 1;
printf("%d", ans);
return 0;
}

最新文章

  1. DevExpress 隐藏Ribbon中barbuttonItem的SuperTip(1)
  2. ajax分页与组合查询配合使用
  3. Boundary Representations
  4. NEC学习 ---- 模块 - 带点文字链接列表
  5. bootstrap中弹出窗体dialog的自定义
  6. 如何使用通用Mapper
  7. 恢复误删的procedure
  8. 教你爱上Blocks(闭包)
  9. 原创游戏,金庸群侠传X 0.5公布
  10. express 最佳实践(二):中间件
  11. leetcode First Bad Version(二分查找)
  12. [转载] java多线程学习-java.util.concurrent详解(四) BlockingQueue
  13. Erlang的常驻模块与功能模块
  14. Vue H5 项目模板
  15. IDEA常用配置
  16. Collection中的方法
  17. ES系列十六、集群配置和维护管理
  18. div指令和mul指令
  19. Customizing docker
  20. Centos6.4下安装protobuf-c问题及解决办法

热门文章

  1. Semaphore信号量的使用
  2. 关于Jmeter线程组的设置,看这一篇就够了
  3. SpringCloud微服务实战——搭建企业级开发框架(二十七):集成多数据源+Seata分布式事务+读写分离+分库分表
  4. LOJ 3399 -「2020-2021 集训队作业」Communication Network(推式子+组合意义+树形 DP)
  5. Hermite WENO 重构格式
  6. Parallel NetCDF 简介
  7. NCBI SRA数据如何进行md5校验?
  8. 【Python小试】判断一条序列GC含量高低
  9. dlang 安装
  10. Mysql的delimiter