统计有几个连通分量--hdu 1213 并查集
点击打开链接
题意:T组测试用例,输入n,m,输入m对数x,y(x不等于y),表示x,y在同一个连通分量里面。输出连通分量的个数。
连通分量的个数:
1.可以求出一共有多少个根节点(即fa[i]==-1的i个数)
2.可以用原始连通分量数n 减去 有效的合并次数。即每次合并两个连通分量就会使得总的分量数目减少1.
#include<bits/stdc++.h>
using namespace std;
int fa[1010];
int findset(int x)
{if(fa[x]==-1)return x;return fa[x]=findset(fa[x]);
}
int bindd(int u,int v)
{int fu=findset(u);int fv=findset(v);if(fu!=fv){fa[fu]=fv;return 1;}return 0;
}
int main()
{int t,n,m,x,y,ans,i;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);ans=n;memset(fa,-1,sizeof(fa));while(m--){scanf("%d%d",&x,&y);ans-=bindd(x,y);//cout<<ans<<"!"<<endl;}printf("%d\n",ans);}
}
#include<bits/stdc++.h>
using namespace std;
int fa[1010];
int findset(int x)
{if(fa[x]==-1)return x;return fa[x]=findset(fa[x]);
}
int bindd(int u,int v)
{int fu=findset(u);int fv=findset(v);if(fu!=fv){fa[fu]=fv;return 1;}return 0;
}
int main()
{int t,n,m,x,y,ans,i;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);memset(fa,-1,sizeof(fa));while(m--){scanf("%d%d",&x,&y);ans-=bindd(x,y);}ans=0;for(i=1;i<=n;i++)if(fa[i]==-1)ans++;printf("%d\n",ans);}
}
统计有几个连通分量--hdu 1213 并查集相关推荐
- hdu 5606(并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5606 解题思路: 这题实际上是要找一些连通的节点,使得边上的权值都为0. 很明显,首先把权值为0的边都 ...
- hdu 1856 并查集 求最大的子树含有元素的个数
这道题数据有点大, 我再次 被 cin>> he cin<<out 多次超时, 改成 scanf 和 printf 后一次ac . 欲哭无泪啊! 完全是 并查集 ,模板 , ...
- HDU 5441并查集 by cyl
HDU 5441 题意: 杰克喜欢旅游,从城市a到城市b是他最喜欢的,现在有n个城市m个路. 当杰克在从城市a到城市b 的时候需要坐车,但是需要有等待时间t,他无法忍受超过x 的等待时间. ...
- hdu 1232 并查集
并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了.以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定.不分享出来真是对不起party了.(party:我靠,关我嘛事啊?我跟你很熟么?) ...
- hdu 4496 并查集
点击打开链接 题意: 给出一个有N(0<N<=10000)个顶点的无向图(顶点编号0到N-1), 然后依次给出它的M(0<M<=100000)条边,要求依次输出当删除给出的前k ...
- hdu 4907(并查集)
Task schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Pr ...
- hdu 2473(并查集+删除操作)
解题思路:这道题有并查集的删除操作,如果直接对这一棵树进行删除节点操作肯定是很困难的.所以可以建立虚拟节点,只要有一个节点要被删除,就直接把它投影到虚拟节点上,即用这个虚拟节点来代替我们要删除的节点. ...
- hdu 3172(并查集+hash)
解题思路:典型的并查集,只是每个人的名字要转换成数字,可以用map,也可以用字典树,我最开始用的字典树结果爆内存了.. 爆内存: #include<iostream> #include&l ...
- hdu 3081(并查集+最大流)
题目大意: n个男孩n个女孩,女孩选男孩,每个女孩都要选到不同的人 k对女孩有相同选择标准, 女孩每轮都选择没选过的男孩, 问总共能选几轮.解题思路:女孩编号1......n,男孩编号n+1,n+2, ...
最新文章
- [译] APT分析报告:04.Kraken - 新型无文件APT攻击利用Windows错误报告服务逃避检测
- 【Linux】一步一步学Linux——VMware虚拟机三种网络模式详解(07)
- TCP/IP协议各层首部汇总
- Servlet3.0 jsp跳转到Servlet 出现404错误的路径设置方法
- JavaScript引用类型之Array数组的concat()和push()方法的区别
- 【数字信号调制】基于matlab多进制数字频率调制(4FSK)【含Matlab源码 999期】
- Junos: 使用之前
- PyTest 生成多种格式的 测试报告 report
- 【Unity】入门级Unity安装教程
- 自动化测试方案设计和实现
- 计算机wifi共享怎么设置,电脑怎么共享wifi热点 电脑设置wifi热点教程
- WY-2000B空气质量检测系统
- 访问服务器硬盘速度慢,硬盘读取速度变慢 当前传输模式pio的解决方法
- 程序员一周内了解一个行业的方法
- 【办公应用软件】万彩办公大师丨PDF页面修剪帮助文档
- 基于神经网络的目标检测论文之目标检测系统:实时路况检测系统的设计与实现
- 启动kafka过一会进程自动挂掉问题原因
- docker-compose 搭建 Rap2 接口管理平台
- 测试工程师-yy面试 cvte面试总结
- 团队管理5--技术管理如何兼顾技术
热门文章
- python读取txt每一行-Python逐行读取txt文本,按符合分割词并逐行写入txt
- 安装完python怎么打开-python安装后怎么启用
- python编程例子-python网络编程实例简析
- 零基础学python全彩版答案-零基础学Python(全彩版)
- 语音识别技术的研究难点以及未来发展方向
- 成都高新税务推出智能电话语音咨询服务 24小时在线答复
- 未来比较火的计算机领域,【火了】未来十年,中国人才最紧缺的6个专业!
- Vue中this.$router.replace和this.$router.push的区别
- 【动态规划】计蒜客:蒜头君闯关(最长递增子序列的变体)
- 【前缀和笔记】前缀和介绍和使用