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