最小生成树——并查集

简单模板题-洛谷3367并查集

题目描述

如题,现在有一个并查集,你需要完成合并和查询操作。

输入格式

第一行包含两个整数 N,MN,M ,表示共有 NN 个元素和 MM 个操作。

接下来 MM 行,每行包含三个整数 Z_i,X_i,Y_iZ**i,X**i,Y**i

当 Z_i=1Z**i=1 时,将 X_iX**i 与 Y_iY**i 所在的集合合并。

当 Z_i=2Z**i=2 时,输出 X_iX**i 与 Y_iY**i 是否在同一集合内,是的输出 Y ;否则输出 N

输出格式

对于每一个 Z_i=2Z**i=2 的操作,都有一行输出,每行包含一个大写字母,为 Y 或者 N

输入输出样例

输入 #1复制

4 7
2 1 2
1 1 2
2 1 2
1 3 4
2 1 4
1 2 3
2 1 4

输出 #1复制

N
Y
N
Y

说明/提示

对于 30%30% 的数据,N \le 10N≤10,M \le 20M≤20。

对于 70%70% 的数据,N \le 100N≤100,M \le 10^3M≤103。

对于 100%100% 的数据,1\le N \le 10^41≤N≤104,1\le M \le 2\times 10^51≤M≤2×105,1 \le X_i, Y_i \le N1≤X**i,Y**iN,Z_i \in { 1, 2 }Z**i∈{1,2}。

#include <bits/stdc++.h>
using namespace std;
int n,m,z,x,y;
int father[10005];
int find(int point)
{if(father[point]==point)return point;return father[point]=find(father[point]);
}
int main()
{cin>>n>>m;for(int i=1;i<=n;i++)father[i]=i;for(int i=0;i<m;i++){cin>>z>>x>>y;x=find(x);y=find(y);if(z==1){if(x!=y)father[x]=y;}else {if(x==y)cout<<"Y\n";elsecout<<"N\n";}}return 0;
}

进阶一点点的并查集的题,洛谷——口袋的天空

题目背景

小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空。

有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖。

题目描述

给你云朵的个数 NN,再给你 MM 个关系,表示哪些云朵可以连在一起。

现在小杉要把所有云朵连成 KK 个棉花糖,一个棉花糖最少要用掉一朵云,小杉想知道他怎么连,花费的代价最小。

输入格式

第一行有三个数 N,M,KN,M,K

接下来 MM 行每行三个数 X,Y,LX,Y,L,表示XX云和 YY 云可以通过 LL 的代价连在一起。

输出格式

对每组数据输出一行,仅有一个整数,表示最小的代价。

如果怎么连都连不出 KK 个棉花糖,请输出 No Answer

输入输出样例

输入 #1复制

3 1 2
1 2 1

输出 #1复制

1

说明/提示

对于 30%30% 的数据,N \le 100N≤100,M \le 10^3M≤103;

对于 100%100% 的数据,1 \le N \le 10^31≤N≤103,1 \le M \le 10^41≤M≤104,1 \le K \le 101≤K≤10,1 \le X,Y \le N1≤X,YN,0 \le L<10^40≤L<104。

#include <bits/stdc++.h>
using namespace std;
int n,m,k,l,x,y;
int father[10005];
int now=0,need=0;//记录合并了多少次,需要合并多少次
int all=0;//记录最小生成树各边之和
struct edge{int from,to,wage;
};
edge e[10005];
bool cmp(edge a,edge b)
{return a.wage<b.wage;
}
int find(int point)
{if(father[point]==point)return point;return father[point]=find(father[point]);
}
int main()
{cin>>n>>m>>k;need=n-k;for(int i=1;i<=n;i++)father[i]=i;for(int i=1;i<=m;i++){cin>>e[i].from>>e[i].to>>e[i].wage ;}sort(e+1,e+m+1,cmp);for(int i=1;i<=m;++i){x=find(e[i].from);y=find(e[i].to );if(x!=y)father[x]=y,++now,all+=e[i].wage ;if(now==need){cout<<all;return 0;}}cout<<"No,Answer";return 0;
}

最小生成树——洛谷并查集、口袋的天空相关推荐

  1. 最小生成树KrusKal算法(并查集)

    洛谷p1111链接 克鲁斯卡尔算法的思路就是由森林变成树的过程,其中最主要的就是贪心和并查集的应用. 我们知道链接n个点需要n-1条边,这就满足的最后生成的是一颗树,而不是一个环.在这n-1条边的选择 ...

  2. 最小生成树 洛谷P3366【模板】最小生成树 洛谷P2820 局域网

    嗯... 理解生成树的概念: 在一幅图中将所有n个点连接起来的n-1条边所形成的树. 最小生成树: 边权之和最小的生成树. 最小瓶颈生成树: 对于带权图,最大权值最小的生成树. 如何操作? 1.Pri ...

  3. 最小生成树kruskal算法并查集版 C语言实现

    今天数据结构课讲了最小生成树的Kruskal算法和Prim算法,不过都只是概念,可能是怕他们听不懂吧,反正算法实现一概不讲...囧 下午抱着<算法导论>跑去图书馆看Kruskal算法,发现 ...

  4. 最小生成树Kruskal算法+并查集检查连通

    /* 10 6 1 2 6 1 3 1 1 4 5 2 3 5 2 5 3 3 4 5 3 5 6 3 6 4 4 6 2 5 6 6 */// 本例解决最小生成树问题 // 并查集来加快效率 // ...

  5. HDOJ 1863畅通工程(最小生成树kruskal算法并查集实现)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1863 最小生成树kruskal算法:http://www.zhuoda.org/irini/78592.h ...

  6. 【XSY2485】MST(最小生成树+倍增lca+并查集)

    题面 Description 给定一个nnn个点mmm条边的连通图,保证没有自环和重边.对于每条边求出,在其他边权值不变的情况下,它能取的最大权值,使得这条边在连通图的所有最小生成树上.假如最大权值为 ...

  7. 洛谷P2412 查单词 [trie树 RMQ]

    题目背景 滚粗了的HansBug在收拾旧英语书,然而他发现了什么奇妙的东西. 题目描述 udp2.T3如果遇到相同的字符串,输出后面的 蒟蒻HansBug在一本英语书里面找到了一个单词表,包含N个单词 ...

  8. 【C语言】刷题计划第一期——洛谷编程题目集

    如果你已经掌握了一些C语言的基本语法,想练习自己写代码的能力,建议大家可以看一下博主整理题目,从入门到进阶都有.每个阶段需要的技能会有差异,大家要补充对应的基础知识.一起加油,那么一键三连我们开始发车 ...

  9. 擒贼先擒王——并查集

    写一篇并查集的总文,详细介绍什么是并查集?思想是怎样的?怎么写出代码?如何对应题目? 1.什么是并查集 并查集被很多OIer认为是最简洁而优雅的数据结构之一,主要用于解决一些元素分组的问题.它管理一系 ...

最新文章

  1. Backbone学习日记[1]:感性认识
  2. 15个产业级算法推出、35个高精度预训练模型上线!最强国产开源AI框架再进化,密集提升视觉产业实战能力...
  3. Cortex - M3 位带别名首地址的计算方法
  4. 整理blog,回味过去的点滴
  5. [数论]Gcd/ExGcd欧几里得学习笔记
  6. linux 手动安装 oracle(转)
  7. ios定位权限plist_iOS-info.plist 中添加定位权限
  8. 求最大公约数----辗转相除法
  9. execution 排除_使用SQL Server 2016 Live Execution统计信息对SQL查询性能进行故障排除
  10. 利用神经网络内部表征可视化class-specific image regions区域
  11. Rust : CSV库的用法
  12. Java购物车前端代码_JavaWeb后台购物车类实现代码详解
  13. win2000/xp/2003 错误代码
  14. CAD插件学习系列教程(二) 燕秀工具箱的使用
  15. Livezilla on Linux 安装配置教程
  16. HCL华三模拟器静态路由实验
  17. java 且 或 符号_Java 、、|、||、^、、、~、等运算符
  18. js的json php无法json_decode,PHP中遇到BOM、 编码导致json_decode函数无法解析问题
  19. 牛客网SQL大厂面试真题(一)
  20. 《Solar Energy》期刊介绍(SCI 2区)

热门文章

  1. linux 隐藏进程,linux下如何隐藏进程(ps/top)
  2. 2021年流动式起重机司机报名考试及流动式起重机司机最新解析
  3. 公众号客服头像上传-java
  4. java技术:输入拼音自动提示汉字的方法
  5. DHTML是dynamic HTML短语的缩写,即动态HTML
  6. Python爬虫实战之爬取QQ音乐数据!QQ音乐限制太多了!
  7. 2015年暑期学习经历感想
  8. 原码、反码、补码、机器数,真值,概念介绍
  9. 图片上传怎么搞?!阿里云OSS对象存储教你快速实现!
  10. vim下:wq和ZZ命令还是有区别的