ACM-并查集
Nicetomeetu-
没有
展开
-
POJ 3723 Conscription 最大生成树 + 并查集
看了挑战上的这道题,一开始根本没反应过来这就是最大生成树。不过仔细想想,如果我们把是朋友或者间接是朋友的人都放在一个集合,那么但我们通过a来招募b的时候,就在a和b中间连一条边,权值就是a和b的亲密度。当我们把这个集合中的人都招募完的时候,是不是集合中的人都被一条条边连接起来了呢?此外,为了使我们的总花费最小,我们肯定希望他们的亲密度之和最大(节省的钱最多),也就是使得这个连通块的边权值最大。这不原创 2016-11-26 10:26:23 · 425 阅读 · 0 评论 -
POJ 2524 并查集
最基本的并查集,没什么说的#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #incl原创 2016-11-13 18:25:59 · 290 阅读 · 0 评论 -
POJ 1182 食物链 并查集+偏移向量
引言:一般的并查集都是把同一类的点放在一棵树上。但是这道题给出的是一些点的相对关系,就不能按照这样的规则建树了。应该把能够确定相对关系的点放到一棵树上。每个节点除了自身的值之外,还应该有一个域,或者说是偏移量,它表示的是这个点和其父节点之间的关系。所以当我们要改变一个节点的父节点时,还要同时更新这个点和父节点的关系。什么时候一个点的父节点会改变呢?1. 路径压缩2.两棵树合并正原创 2016-10-29 00:17:16 · 744 阅读 · 1 评论 -
POJ 1308 并查集
题目的意思就是输入一组有向边,让我们判断是不是一颗树。我们知道,如果把树上的有向箭头去掉之后,树其实就是一个无环单连通无向图。所以在输入的时候我们就可以把它当做无向边建立并查集。如果两个点在同一集合内,就是有环,不是树。在并查集建立完了之后再判断有几个连通块,如果有多个,则不是树。那么现在我们把没有方向的树的特性判断完了,那么加上箭头该怎么判断呢?用一个数组表示每个点的入度。一棵树有且只有一个原创 2016-11-13 18:22:22 · 409 阅读 · 0 评论