![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并查集
wwwwwwxu
不敢说强记,只敢说博闻。
展开
-
HDU 1232 畅通工程
题目大意:中文题,题意是求有几个不连通块。解题思路 :很简单的并查集问题,我当初喜欢把并查集必须的这个find操作叫做“找爹”,我们找到顶点的“爹”们,然后看有多少个不同的“爹”,假如有n个不同的“爹”,则最少需要n-1条道路。路径压缩这个操作,我以前喜欢写成int get(int a){ if (x==f[x]) return x; else f[x]原创 2015-08-14 22:39:56 · 267 阅读 · 0 评论 -
HDU 1272 小希的迷宫
题目大意:中文题,题意不解释,同样是一道并查集的题,但是这道题里要判是否成环。解题思路:在并查集中我们如何判断是否成环呢?我们只要发现这两个点的根节点是同一个点,且这两个点之间有边,即可判断。同时也要判断边数和点数之间的关系是不是edge+1=node#include#include#includeusing namespace std;#define原创 2015-08-14 22:45:38 · 294 阅读 · 0 评论 -
HDU 1856 More is better
题目大意:在一群人里挑选一些人,这些必须都是朋友关系,关系可以是直接的也可以是间接的。解题思路:非常简单明了的一道并查集,但是不是求一共有几个集合,而是求每个集合中的元素个数,进而求出最大值,只需要在合并两个集合时处理一下,让这两个集合的元素个数也合并一下就行了。接下来只需要找出最大值即可。要注意的一个地方就是:当n=0时,要输出1。#include#includ原创 2015-08-14 23:20:50 · 532 阅读 · 0 评论 -
HDU 1875 畅通工程再续
题目大意:中文题。解题思路:MST,判个距离,kruskal硬上就行。#include#include#include#include#include#include#include#define LL long long#define db double#define maxn 10000000#define EPS 1e-15#define原创 2015-08-20 23:12:46 · 265 阅读 · 0 评论 -
HDU 1879 继续畅通工程
题目大意:中文题。解题思路:MST,kruskal直接上就行了。#include#include#include#include#include#include#include#define LL long long#define db double#define maxn 10000000#define EPS 1e-15#define ma原创 2015-08-20 23:10:58 · 356 阅读 · 0 评论