#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int maxn=1000+10;
int n,m;
int cnt;
int f[maxn],size[maxn];
int find(int x){
return x==f[x] ? x : f[x]=find(f[x]);
}
void lunion(int x,int y){
int fx=find(x),fy=find(y);
if(fx==fy)
return;
if(size[x]>=size[y]){
f[fy]=fx,size[x]+=size[y];
return;
}
f[fx]=fy,size[y]+=size[x];
return;
}
int main(){
while(scanf("%d",&n)&&n!=0){
scanf("%d",&m);
cnt=0;
for(int i=1;i<=n;i++)
f[i]=i,size[i]=1;
int x,y;
for(int i=1;i<=m;i++)
scanf("%d%d",&x,&y),lunion(x,y);
for(int i=1;i<=n;i++)
if(f[i]==i)
cnt++;
printf("%d\n",cnt-1);
}
return 0;
}
相关推荐
【Cubietruck】Qt5.8.0 x64、x86、armhf三个版本的编译安装
一、 Preparation 以下环境配置支持虚拟机和实体机,但是实体机生产效率会相对高一点,实体机编译Qt的速度是虚拟机两倍以上。 若使用虚拟机,推荐使用VirtualBox,开源免费,尽量不要使用Vmware破解版。 Download List 名称 链接 下载项目 OS https://mirro
并查集(按秩合并+路径压缩)基础讲解
并查集入门 并查集算法在很多算法中都会简单的涉及,比如最小生成树的kruskal算法等。其主要功能是检查不同元素是否属于同一个连通块。主要运用是在图相关的内容中。 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。 内容讲解 主要特征 在不同的不相交集合中选出一个代表元素,称为代表元 一般这个代表元代表这个集合。查找一...
技术美术个人笔记(十六)——Houdini到UE的大地形
文章目录关于地形白模制作关于PDG流程 关于地形白模制作 用heightfield noise和笔刷刷出合适的mask做山形叠加: 用remap可快捷反转mask ,用来做平原地区的小型丘陵: 接着用clip切平最低处,用distort制造侵蚀等,对部分地区用笔刷进行微调拓宽峡谷: 用经过sweep打平的曲线以及裁切的各种多面体用heightfield_project投影制作河道和水池,用blur mask并remap的方法拓宽河道 用distort、erode制造合适的弯曲和侵蚀,同理可挖出月牙形
22 软学
这里图的广度优先遍历没有采用之前王道书里的firstneighbor和nextneighbor,思路上差不多,但是还是得多练练。
可调电源的电路设计
可调电源在电路调试中经常用到,可调电源分为两种2-5v(非0点可调)和0-5v(低至0点可调)可调两种。 对于第一种非0点电压的可调范围,其主要是由于开关电源或LDO芯片输出的最小电压为一个固定电压值,非0范围。因此通过调节开关电源或LDO端的反馈电阻的设计模型,其电压可调范围都与芯片的参考电压有关。 基于开关电源的可调电压设计电路 因芯片U2的输出参考电压VSENSE管脚为1.22v。因此,通过调节可调电阻R8的数值,其芯片输出的最低电压一定不小于1.22v。当然此种方案是手动可调输出电压的设计,如
海豚调度器(dolphinscheduler)再次使用,添加钉钉预警
1,首先我们部署是海豚调度器 1.3.8版本,由于页面只有邮件预警,所以在了解源码的同时,需要添加钉钉预警 2,说明,这一块是同事搞的,不是我搞的,新版本的dolphinscheduler已经有了钉钉模块,只是新版本还没有发布 3,我们现在只是添加简单的钉钉预警,任务成功或者失败会发送邮件+钉钉 4,具体操作 找到最新的源码devhttps://github1s.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-alert/src/ma...
基本数据结构:并查集(路径压缩与按秩合并)
本文重点介绍了并查集的实现与它的两种优化方式:路径压缩与按秩合并。
保姆级教程:从 TLE 数据源获取到 Cesium 卫星轨迹可视化全流程(含常见报错排查)
本文提供从TLE数据源获取到Cesium卫星轨迹可视化的全流程保姆级教程,涵盖数据预处理、satellite.js计算、Cesium集成及性能优化等关键步骤,并针对常见报错提供详细排查方案,帮助开发者高效实现卫星轨迹可视化。
并查集(路径压缩、按秩合并、按大小合并)
并查集是一种树形的数据结构,可以用它处理一些不交集合并、查询以及连通块等问题。find:查询两个元素是否为同一集合merge:将两个集合合并为一个集合。
Unity中使用TCP和UDP传输摄像头视频的实践
本文探讨了在Unity中通过TCP和UDP协议传输摄像头视频的实现方法。TCP通过自定义消息帧保证数据完整性但效率较低,UDP传输速度快但可能丢帧。文章提供了Python和Unity的代码示例,分析了两种协议的适用场景:TCP适合要求数据完整性的应用,UDP则适合追求实时性的场景。最终选择取决于具体需求,并需要注意线程安全与同步机制。
FlashBootloader01-基于UDS的Flash Bootloader【架构篇】
文章目录1 Flash Bootloader的依赖项2 Flash Bootloader中使用的UDS的主要功能3 Flash Bootloader更新固件3.1 初始化MCU3.2 刷写流程 1 Flash Bootloader的依赖项 通常Flash Bootloader由以下四方面组成: UDS协议 上位机「编写Bootloader Sequence」 通信驱动(如CAN ) Flash Driver 2 Flash Bootloader中使用的UDS的主要功能 1. 10 02服务 客户端
并查集的两种优化:路径压缩和按秩合并(两个优化方式可以一起使用)
当涉及并查集数据结构时,路径压缩和按秩合并是两种常用的优化技术,它们都旨在提高并查集操作的效率。
OpenClaw实战-行政与HR必备:AI驱动的办公自动化
智能会议纪要自动生成会议时间智能协调自动提醒和跟进简历智能筛选和匹配度分析面试安排自动化入职办理流程化通知公告一键发布发票识别和报销辅助资产管理数字化让AI处理繁杂的事务性工作,让您有更多时间专注于更有价值的战略和管理任务。
hdu1232(并查集)
并查集是一个简单而又有效的算法,代码实现起来也挺简单的。。。。 基本的实现代码如下面所示,不明白的可以参考链接https://blog.youkuaiyun.com/niushuai666/article/details/6662911 直接用代码解释吧。。。 用hdu1232解释吧。 void init(int x) //初始化,相当于一开始每个城市一个整体,没有道路跟它相连 { ...
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
并查集详解
通过find函数找出该节点的根节点, 通过UNION函数将两棵树合并。 加入rank[N]来记录每个节点的秩(即树的高度),并按秩进行合并,可避免合并时的最糟糕情况,(树形为一条直线) 通过路径压缩可以减少每次寻找根节点的次数。 下面通过HDU1232(畅通工程)来进行分析: Code#include #include #include using namespace std;
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
hdu 1232 / 1213 并查集(求子集个数)
并查集 模板: 用到了两个优化 ,一个是按秩(rank)合并,一个是路径压缩。 1 int rank[N]; 2 int parent[N]; 3 int n; 4 void init() 5 { 6 int i; 7 for( i=1;i<=n;i++) 8 { 9 parent[i]=i; 10 ...
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
并查集 按秩合并&路径压缩
并查集自己也只是会了方法,稍微有点思维难度的题就写不出来【例如银河英雄传说】,Menci教的代码。 还有Menci是把并查集写成了一个结构体,里面有各种成员函数,也超级棒。例题是HDU 1232#include <cstdio>const int maxn = 1005;int f[maxn], dep[maxn], n, m;int Find(int x) //带路径压缩 { retu
HDU-1232 并查集
简单的并查集小题。 再过两周就NOIP复赛了... 原来什么题都有0ms过的牛人!我的解法15ms /* * HDU-1232 畅道工程 * mike-w * 2011-10-21 * --------------- * tag: MST? 并查集... */ #include #include #include #define SIZE 1111 int set[SIZE];
并查集 hdu
蓝桥杯6.15训练 并查集 hdu1232 #include<cstdio> #include<iostream> using namespace std; const int maxn = 1006; int pre[maxn]; int num = maxn; int N,M; void init(){ for(int i = 1;i <= N;i ++){ pre[i] = i; } num = N-1; return ; } int find(
并查集的两种实现(按秩合并+路径压缩)
并查集:就是有求并集,查找元素属于哪个集合的功能。 1、路径压缩:使X到根上的每一个节点的父节点都变为根节点。 查询: void Find(int x) { if(a[x]==0) return x; else return a[x]=Find(a[x]); } 合并: void Merge(int x,int y) { int...
并查集入门
今天又重新回顾了一下忘得差不多的并查集:下边是转的,再加上一道hdu的并查集入门题。 文章作者:yx_th000 文章来源:Cherish_yimi (http://www.cnblogs.com/cherish_yimi/) 转载请注明,谢谢合作。 [本文新址: http://www.ahathinking.com/archives/10.html ] 昨天和今天学习了并
Disjoint Sets
最近接触到Disjoint Sets(并查集)。现在将看到的一些比较好的资料,收集整理如下。 【转载】原创地址:http://mindlee.net/2011/10/21/disjoint-sets/ 点击打开链接 《算法导论》这一章讲的有点麻烦。首先,这一章标题是《用于不相交集合的数据结构》,内容看了半天才反应过来,这不就并查集吗,搞这么长个翻译。对于并查集的理解,非常好的一个例子:(借用自
并查集模版
并查集模板
并查集
转自http://mindlee.net/2011/10/21/disjoint-sets/ 《算法导论》这一章讲的有点麻烦。首先,这一章标题是《用于不相交集合的数据结构》,内容看了半天才反应过来,这不就并查集吗,搞这么长个翻译。对于并查集的理解,非常好的一个例子:(借用自师兄PPT) 这幅图中,每一个单独的小组合就是一个独立的集合,集合与集合之间不相交,比如虚竹所在逍遥派是一
HDU-畅通工程-1232(并查集)How Many Tables(1213)
/*畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 22606 Accepted Submission(s): 11804 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,
3658



被折叠的 条评论
为什么被折叠?



