
并查集
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 · 307 阅读 · 0 评论 -
HDU 1272 小希的迷宫
题目大意: 中文题,题意不解释,同样是一道并查集的题,但是这道题里要判是否成环。 解题思路: 在并查集中我们如何判断是否成环呢?我们只要发现这两个点的根节点是同一个点,且这两个点之间有边,即可判断。 同时也要判断边数和点数之间的关系是不是edge+1=node #include #include #include using namespace std; #define原创 2015-08-14 22:45:38 · 336 阅读 · 0 评论 -
HDU 1856 More is better
题目大意: 在一群人里挑选一些人,这些必须都是朋友关系,关系可以是直接的也可以是间接的。 解题思路: 非常简单明了的一道并查集,但是不是求一共有几个集合,而是求每个集合中的元素个数,进而求出最大值,只需要在合并两个集合时处理一下,让这两个集合的元素个数也合并一下就行了。接下来只需要找出最大值即可。要注意的一个地方就是:当n=0时,要输出1。 #include #includ原创 2015-08-14 23:20:50 · 581 阅读 · 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 · 297 阅读 · 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 · 395 阅读 · 0 评论