一道比最基础的并查集有优化的题;
l 并查集的优化
1、Find_Set(x)时 路径压缩
寻找祖先时我们一般采用递归查找,但是当元素很多亦或是整棵树变为一条链时,每次Find_Set(x)都是O(n)的复杂度,有没有办法减小这个复杂度呢?
答案是肯定的,这就是路径压缩,即当我们经过"递推"找到祖先节点后,"回溯"的时候顺便将它的子孙节点都直接指向祖先,这样以后...
分类:
其他好文 时间:
2014-07-14 18:30:13
阅读次数:
233
The Suspects
Time Limit: 1000MS
Memory Limit: 20000K
Total Submissions: 21365
Accepted: 10347
Description
Severe acute respiratory syndrome (SARS), an atypical pneu...
分类:
其他好文 时间:
2014-07-09 10:10:48
阅读次数:
131
并查集问题。
题意是说: 编号0 可能感染SARS。
然后有M个 团队,团队的人可能互相感染。
找出所有可能感染的SARS人。
把某个团队的并起来就好了。最后扫描一遍。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#in...
分类:
其他好文 时间:
2014-07-06 09:37:07
阅读次数:
173
本题也是个标准的并查集题解。
操作完并查集之后,就是要找和0节点在同一个集合的元素有多少。
注意这个操作,需要先找到0的父母节点,然后查找有多少个节点的额父母节点和0的父母节点相同。
这个时候需要对每个节点使用find parent操作,因为最后状态的时候,节点的parent不一定是本集合的根节点。
#include
const int MAX_N = 30001;
stru...
分类:
其他好文 时间:
2014-07-01 10:50:15
阅读次数:
179