随笔分类 -  并查集

摘要:题目: 传送门 题解思路: //大概题解思路:通过枚举的方式,在已知的m条道路中选出一条进行断开,相当于在建立道路联系的时候不将这条道路连上 //然后连接剩余的道路(实质上进行m次这种操作 每次都有一条道路不连接) //误区:很容易被题目给带偏思路,会考虑先将所有的点通过道路连接,然后再选择炸毁,但 阅读全文
posted @ 2020-10-11 20:25 neverstopcoding 阅读(133) 评论(0) 推荐(0)
摘要:题目描述: 传送门 题解思路:很明显总道路数应该是村子数-1 只需要判断有多少条重复的道路即可 结果即为(n-1-(m-重复数)) 代码: #include<iostream> #include<cstdio> using namespace std; const int maxn=1000+10; 阅读全文
posted @ 2020-10-10 20:36 neverstopcoding 阅读(152) 评论(0) 推荐(0)
摘要:题目: 传送门 题解:纯并查集模板题 代码: #include<iostream> using namespace std; int n,m; //n为结点数量 const int maxn=1e4+10; int par[maxn]; //储存祖先结点 int rank1[maxn]; //储存结 阅读全文
posted @ 2020-10-10 19:45 neverstopcoding 阅读(136) 评论(0) 推荐(0)
摘要:题目传送门 核心解法(并查集): 关键要理清楚这些关系是怎样的:即通过了解题意可知:假设现在有如下三种动物类型:老虎,老虎的食物,老虎的天敌。所输入的x y都只满足这三种类型(输入m次去判断关系),x y是两个独立的未知种类的动物(即不知道是老虎本体、食物还是天敌)。现在需要通过构建且查询个体间的关 阅读全文
posted @ 2020-03-31 20:44 neverstopcoding 阅读(176) 评论(0) 推荐(0)
摘要:题目传送门 方法:这是一道赤裸裸的并查集题目,根据输入先进行合并,合并后根据输入开始查询判断即可。需要注意的是,为了简化题目,实际操作过程中可以用编号来对应姓名,从而表示出不同的学生,并建立相应的联系。 实现代码: #include<bits/stdc++.h> #include <cstring> 阅读全文
posted @ 2020-03-31 20:38 neverstopcoding 阅读(133) 评论(0) 推荐(0)
摘要:题目传送口 很明显,这个题用邻接矩阵+dfs就能出(从不同点出发搜,且搜的时候更新最小值,可以剪枝,并且不成环) 。但算法标签中有并查集,因此此题尝试用并查集的方法来解决类似的连通图问题。 核心算法: 把每一条边按权值从小到大排序,然后依次看,如果两个端点不在一个集合里,就把他们合并,累加路径长度。 阅读全文
posted @ 2020-03-31 19:52 neverstopcoding 阅读(336) 评论(0) 推荐(0)
摘要:并查集,顾名思义,就是一个合并和查询的过程,其实际意义类似于等价划分的作用(划分出不同的等价类)。掌握基本的知识和思想后,便可以运用并查集来解决问题。其中,学会使用并查集的模板对解决并查集问题十分十分有帮助。 并查集:(union-find sets) 一种简单的用途广泛的集合. 并查集是若干个不相 阅读全文
posted @ 2020-03-31 19:40 neverstopcoding 阅读(942) 评论(0) 推荐(0)