并查集——加边的无向图

题目描述

给你一个 n 个点,m 条边的无向图,求至少要在这个的基础上加多少条无向边使得任意两个点可达~

输入描述:

第一行两个正整数 n 和 m 。
接下来的m行中,每行两个正整数 i 、 j ,表示点i与点j之间有一条无向道路。

输出描述:

输出一个整数,表示答案

示例

输入

4 2
1 2
3 4

输出

1

备注:

对于100%的数据,有n,m<=100000。

分析:

这题其实比较简单,就是基本的并查集操作,但是我一开始想复杂了,觉得n个点可能不是按顺序的1~n,就想着把数字先放到集合中,再将集合中的数字x的find(x)放入另一个集合中,这样另一个集合中的大小减1就可以得到结果了,但是,这种方法是错误的,因为我没有考虑到没边相连的点,我只是把m行有边连着的各点放入集合中,而忽略了其他的点,使得结果一直没有通过。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=1e5+50;
int vis[maxn];
int find(int x)
{if(vis[x]==x){return x;}else{vis[x]=find(vis[x]);return vis[x];}
}
void merge(int a,int b)
{int p=find(a);int q=find(b);if(p==q){return ;}else{vis[q]=p;return ;}
}
int main()
{int n,m;cin>>n>>m;for(int i=1;i<=100000;i++){vis[i]=i;}for(int i=0;i<m;i++){int x,y;cin>>x>>y;merge(x,y);}int num=0;for(int i=1;i<=n;i++){if(find(i)==i){num++;}}cout<<num-1<<endl;return 0;
}

并查集——加边的无向图相关推荐

  1. 简单并查集-加边的无向图

    并查集小白入门 并查集最常用的两个函数就是find() 和 merge(): 代码如下所示: 这里最后统计边数时,可以用set来记录(依次遍历,将每个点的父节点加入集合,因为set默认去重,所以相等的 ...

  2. 算法-并查集-加边无向图

    题目描述:给你一个 n 个点,m 条边的无向图,求至少要在这个的基础上加多少条无向边使得任意两个点可达~ 输入描述:第一行两个正整数 n 和 m . 接下来的m行中,每行两个正整数 i . j ,表示 ...

  3. C - BLG POJ - 1417 种类并查集加dp(背包)

    思路:刚看这道题感觉什么都不清楚,人物之间的关系一点也看不出来,都不知道怎么写,连并查集都没看出来,但是你可以仔细分析一下,当输入字符串为"yes"的时候,我们设输入的值为x和y, ...

  4. HDU(1856),裸的带权并查集

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1856 题意:朋友圈问题,A和B是朋友,B和C是朋友则A和C也是朋友,依次类推,题目的意思就是求最大的朋 ...

  5. LeetCode 1697. 检查边长度限制的路径是否存在(排序+并查集)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个 n 个点组成的无向图边集 edgeList ,其中 edgeList[i] = [ui, vi, disi] 表示点 ui 和点 vi 之间有一 ...

  6. 畅通工程 hdu 1232 HDU - 1863 (并查集+最小生成树)

    畅通工程hdu 1232 并查集 Problem Description Input Output 参考代码 HDU - 1863 Problem Description Input Output 参 ...

  7. 我知道并查集的可爱之处

    请开始您的并查集之旅 迈入门槛 文字概念 故事配图辅助理解 浅尝辄止 畅通工程 程序自动分析 supermarket 慢慢深入 银河英雄传说 parity game 1.带权并查集 2.扩展域并查集 ...

  8. 加边的无向图(并查集)

    思路:加边个数等于连通块个数减一,因为是无向图可以用直接用并查集统计连通块个数. #include <cstdio> #include <cstring> #include & ...

  9. I - Ant Trip (无向图欧拉回路+并查集),判断

    I - Ant Trip 参考博客:Ant Trip(欧拉回路+并查集) 参考:欧拉路径问题与欧拉回路问题 题意:给你无向图的 N 个点和 M 条边,保证这 M 条边都不同且不会存在同一点的自环边,现 ...

最新文章

  1. matlab 线模式密度,环形腔窄线宽光纤激光器的研究
  2. 高效整洁CSS代码原则 (下)
  3. python 三数之和
  4. 【uni-app】小程序实现微信在线聊天(私聊/群聊)
  5. NYOJ 56 阶乘因式分解(一)
  6. python已知Camera及Lidar2到Lidar1外参,求Camera到Lidar2外参
  7. 2017-2018-1 20155222 201552228 实验五 通讯协议设计
  8. Web应用系统中数据传递的方式汇总
  9. 性能指标、响应时间、并发量…聊聊性能优化的衡量指标
  10. 远程连接 速度慢 显示 正在连接到很久
  11. Python安装完成 运行的时候报错 0xc000007b
  12. java 日历选择天,如何使用Java日历从date中减去X天?
  13. c语言烟花代码,C语言烟花程序
  14. 科技爱好者周刊(第 165 期):全端 App 的时代
  15. Ghost Win10 企业版LTSC 2020.05(32位+64位)
  16. TCC(TinyC)编译器汉化(中文编译器、汉语编程)之五:语法分析下
  17. 魔兽对战平台修改服务器数据,《魔兽争霸3》1.29补丁上线官方对战平台:平衡性大做改动...
  18. 网络数据采集分析工具tcpdump定义抓包过滤器
  19. 速度来看mac电脑怎么彻底关闭系统更新
  20. 全世界的程序员们,为什么都不在意“穿衣”这档事?

热门文章

  1. Delphi 写入txt文件
  2. 自由能计算专题3:gromacs计算自由能的7种方法案例
  3. Win7解决telnet不是内部或外部命令的方法
  4. idea中增大jdk内存
  5. 区块链100讲:Truffle——一个更简单的部署智能合约的方法
  6. MongoDB 杂事
  7. 【微信小程序】小程序实现文件的上传及预览,以PDF文件为例。
  8. linux远程登录maridb,linux – 无法使用phpMyAdmin登录到远程MariaDB服务器,但在shell中工作...
  9. 从安卓巴士到CocoaChina,曾经的顶级流量王者,如今的落寞与淡去
  10. 《数学巴士》使用指南