摘要: 题目是说, 对于一个给定n个数字的集合,我每次有2种操作,一个是I u v 是说,把u的祖先设置为v(f[u]=v),然后u到v的距离变成|u-v|%1000,也就是权值。 E u 是说,询问u到其祖先的距离。 并查集找到根节点,查找中维护权值,两个数组pa[],d[],一个是集合代表元,一个是到根 阅读全文
posted @ 2016-05-17 22:06 banana16314 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 元素看成顶点,化合物看成一条边。用并查集维护图的联通分量。对于每个新增的化合物(x, y),如果x和y在同一个联通分量里,则加入边(x,y)使得联通分量形成环,从而危险。 代码如下: 1 #include <cstdio> 2 const int maxn=1e6; 3 int pa[maxn]; 阅读全文
posted @ 2016-05-17 21:06 banana16314 阅读(146) 评论(0) 推荐(0) 编辑