并查集(浓缩的精华模版!!!!)
常规模板对比入口:并查集常规模板
下面是精华模板:
#include <iostream>const int MAXN = 1e6+10;using namespace std;int pre[MAXN];int height[MAXN];int sum; /*递归写法精华版find: 省掉初始化自己的上级是自己,直接用0表示是自己若用其他数字表示上级是自己,比如-1,最多用memset(pre,-1,sizeof(-1)),这样初始化更快 return pre[x] = find(pre[x])这句代码路径压缩包含其中(递归回溯实现)如果数据很大,出现爆栈的情况 ,那么就使用非递归写法 */int find(int x){if(pre[x] == 0)return x;return pre[x] = find(pre[x]);}/*merge 一般不用写优化,如果要优化的话参考 下面第二个merge */ void merge(int x,int y){int fx = find(x),fy = find(y);if(fx != fy){pre[fx] = fy;sum--;//看具体问题 }} /*//merge优化 void merge(int x,int y){int fx = find(x),fy = find(y);if(fx != fy){if(height[fx] < height[fy]) //高的作为主干 pre[fx] = fy;else{pre[fy] = fx;if(height[fx] == height[fy])height[fx]++;} sum--;//看具体问题 }} */int main(){int m,n;cin>>n>>m;int k,a,b;sum = n*m;cin>>k;for(int i = 0; i < k; i++){cin>>a>>b;merge(a,b);}cout<<sum<<endl;return 0;}
并查集(浓缩的精华模版!!!!)相关推荐
- 畅通工程(并查集模版题)
题意: 多组输入N,M,当N为0退出人输入,N是道路数目,M是村庄总数,随后N行,每行输入三个数两个村庄的编号,以及连接这两个村庄的费用. 对每一组数据输出畅通工程的最低费用,如果不能畅通就输出&qu ...
- [COCI2017-2018#5] Pictionary(并查集+dfs)
贼ex的一道,卡了本仙女整整7个小时orz 思路容易理解,but码力very重要orz 我愿意花五毛钱提升我的码力,换个脑子也行,不换脸这张脸生得俊俏 luogu传送door 题目 在宇宙一个不为人知 ...
- POJ 2236 Wireless Network (并查集)
Wireless Network 题目链接: http://acm.hust.edu.cn/vjudge/contest/123393#problem/A Description An earthqu ...
- 数据结构之并查集Union-Find Sets
1. 概述 并查集(Disjoint set或者Union-find set)是一种树型的数据结构,常用于处理一些不相交集合(Disjoint Sets)的合并及查询问题. 2. 基本操作 并查集 ...
- POJ 1611 The Suspects (并查集)
The Suspects 题目链接: http://acm.hust.edu.cn/vjudge/contest/123393#problem/B Description 严重急性呼吸系统综合症( S ...
- AcWing4084 号码牌 (并查集 / bitset优化Floyd)
题目链接: 号码牌 大致题意 给定一个长度为nnn的序列, 第iii个位置的值为aia_iai. (保证aaa是111~nnn的一个排列) 每个位置还有一个值did_idi, 若满足∣i−j=di ...
- [并查集][最小生成树]PJOJ 2560 雀斑连线/luogu 2921 修复公路
题目描述 In an episode of the Dick Van Dyke show, little Richie connects the freckles on his Dad's back ...
- 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈
题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...
- HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集
题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...
最新文章
- Windows Azure ISV博客系列:ReedRex 的sociobridge
- 关于USART接收中断的BUG和注意事项
- 互联网思维-标签思维(1)
- 团队开发个人总结05
- android xml: xliff:g
- 21 WM配置-策略-入库策略1-定义固定仓位的策略F(Fixed Bin Strategy)
- MSDN WebCast网站全新改版
- 定个小目标,炒股咯....
- c语言10-100000取整数,100个C语言地编程题.docx
- python搭配什么数据库_教你如何优雅地用Python连接MySQL数据库
- 江湖救急!磁盘数据大救星TestDisk
- Bailian2943 小白鼠排队【排序】
- PHP实现程序单例执行
- 使用VS2012新建空白解决方案
- 区块链项目需要服务器吗,区块链需要服务器吗
- 剑指 Offer 47. 礼物的最大价值
- 232串口线或者串口的简单测试
- ARM架构与X86架构
- 《简约至上:交互式设计四策略》读书感悟
- Android_个人中心_修改个人信息
热门文章
- 计算机专业核心技术,计算机系多媒体核心技术实验室建设专业方案(10页)-原创力文档...
- php网站后台密码加密,thinkphp 后台登陆密码加密传入密钥
- java学习体会论文_Java I/O学习心得一
- autotype安全 fastjson_Fastjson 安全更新,建议升级到 1.2.28 或更新版本
- elasticsearch索引模板
- 用Python轻松开发数据库取数下载工具
- 中国已消失的九所世界级大学
- 肝!分享 2 本高质量算法书籍!
- 在 Linux 环境下,我用了这款端口扫描工具~
- GitHub 开源神器:堪称作业终结者!