求连通块个数(使用并查集)
并查集求连通块个数的模板
#include<bits/stdc++.h>using namespace std;const int maxn = 1e5+5; vector<int>G[maxn];bool isRoot[maxn] = {false}; int pre[maxn];void init(int n){for(int i = 0; i <= n; i++) pre[i] = i; }int find(int x){if(pre[x] == x) return x;else return pre[x] = find(pre[x]); }void mix(int a, int b){int fa = find(a), fb = find(b);if(fa != fb){pre[fa] = fb;} }int cul(int n){int ans = 0;for(int i = 1; i <= n; i++){isRoot[find(i)] = true;}for(int i = 1; i <= n; i++){ans += isRoot[i];}return ans; }int main() {int n;scanf("%d", &n);init(n);for(int i = 1; i < n; i++){int a, b;scanf("%d%d", &a, &b);mix(a, b);}//连通块个数int cnt = cul(n);printf("%d\n", cnt);return 0; }Input : 5 1 2 1 3 1 4 2 5 Output: 1 Input: 5 1 3 1 4 2 5 3 4 Output: 2
求连通块个数(使用并查集)相关推荐
- 图中连通块的个数:并查集
图的连通性问题 在地图上有若干城镇(点),已知所有有道路直接相连的城镇对.要解决整幅图的连通性问题.比如,随意给你两个点,让你判断它们是否连通:或者问你整幅图一共有几个连通块,也就是被分成了几个互相独 ...
- DFS求连通块数目(深搜)
DFS求连通块数目 这里认为,连通块是包括斜对角线的路径连通的块. 测试数据 5 5 ****@ *@@*@ *@**@ @@@*@ @@**@ 计算通过@相连的连通块的个数 测试输出: 2 样例代码 ...
- 【BZOJ 1098】办公楼(补图连通块个数,Bfs)
补图连通块个数这大概是一个套路吧,我之前没有见到过,想了好久都没有想出来QaQ 事实上这个做法本身就是一个朴素算法,但进行巧妙的实现,就可以分析出它的上界不会超过 $O(n + m)$. 接下来介绍一 ...
- 【Codeforces Round #548(Div. 2)】Edgy Trees(数学+bfs求连通块)
题目链接 C. Edgy Trees time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- UVa572 Oil Deposits DFS求连通块
技巧:遍历8个方向 for(int dr = -1; dr <= 1; dr++)for(int dc = -1; dc <= 1; dc++)if(dr != 0 || dc != 0) ...
- *【ZOJ - 3781】Paint the Grid Reloaded(dfs求连通块缩点,bfs求最短路,建图技巧)
题干: Leo has a grid with N rows and M columns. All cells are painted with either black or white initi ...
- CF1139C Edgy TreesDFS求连通块大小、思维
题目 题目链接 给一颗树,每条边都是红或黑的.问有多少种大小为kkk的序列[a1,a2...,ak][a_1,a_2...,a_k][a1,a2...,ak]满足,从a1a_1a1到a2a_2 ...
- [uva]AncientMessages象形文字识别 (dfs求连通块)
非常有趣的一道题目,大意是给你六种符号的16进制文本,让你转化成二进制并识别出来 代码实现上参考了//http://blog.csdn.net/u012139398/article/details/3 ...
- POJ 2386 dfs求连通块
题目: 由于近期的降雨,雨水汇集在农民约翰的田地不同的地方.我们用一个 的网格图表示.每个网格中有水(W) 或是旱地(.).一个网格与其周围的八个网格相连,而一组相连的网格视为一个水坑.约翰想弄清楚他 ...
最新文章
- 美多商城之购物车(购物车存储方案)
- 计算机IO系列(二)BIO/NIO/多路复用实现
- 线性表【项目 - 求集合并集C语言】(带注释)
- 美团点评APP在移动网络性能优化的实践,吊打面试官系列!
- codevs 3981 动态最大子段和
- android surface windows,Android易混概念辨析之Surface,Window,View,SurfaceView,Bitmap
- DatagridView 跳转并显示特定的行
- Machine Learning Lecture Notes
- HTML5期末大作业:我的家乡网站设计——我的家乡-杭州(7页) HTML+CSS+JavaScript 大学生家乡网页作品 老家网页设计作业模板 学生网页制作源代码下载
- matlab傅里叶变换处理图像,MATLAB数字图像处理(1)基本操作和傅里叶变换
- WLAN 与WIFI的区别?
- 一个老程序员的计算机视觉蹒跚学习之路
- SDNU-1014 页码问题
- 【GNSS】GREAT多频多系统GREAT-UPD开源代码-第4.1章 代码解读之gnss.h/gnss.cpp
- 全文检索引擎ElasticSearch:文档管理、集成IK分词器
- ABP应用开发(Step by Step)-下篇
- No7.线程常用操作方法
- Java实现 兔子数问题
- 【转载】【UEFI学习】edk2中各个包介绍
- iPad mini7:库克终于舍得堆料了?