数据结构 并查集
文章平均质量分 74
saucyJack
外科
展开
-
poj 1182 食物链(DSU)
①普通并查集:f[i]=i,表示i属于Af[i]=i+n,表示i属于Bf[i]=i+2*n,表示i属于C每次合并之前先进行判断如果x和y属于同类,则需要判断(x,y+n)和(x,y+2*n)如果x吃y,则需要判断(x,y)和(x+2*n,y)②带权并查集:每次合并压缩路径的时候, 模三取余,然后判断权值即可附上普通并查集的代码:#includ原创 2016-03-07 08:58:00 · 249 阅读 · 0 评论 -
poj 2492 A Bug's Life(带权并查集)
题目链接:http://poj.org/problem?id=2492用 0 1表示两种性别用sum[i]表示节点i到根节点的距离,f[i]记录i的根节点。f[rb]=ra;带权路径压缩:sum[rb]=(sum[a]-sum[b]+1)%2;#include#include#include#include#includeusing nam原创 2016-02-09 14:18:34 · 222 阅读 · 0 评论 -
poj 1703 Find them, Catch them(Dsu)
题目链接:http://poj.org/problem?id=1703用二维数组,第一维记录元素i(f[i][0]),第二维记录与i不在同一集合的元素j(f[i][1])。初始化f[i][0]=i,f[i][1]=0(表示没有元素);每次操作时,合并f[a][0]和f[b][1],f[a][1]和f[b][0]。#include#include#include#include原创 2016-02-09 12:12:37 · 184 阅读 · 0 评论 -
POJ 2513(Trie+Hash+Dsu)
题目链接:http://poj.org/problem?id=2513这道题存在空数据的情况,也是无语了。建立字典树,然后哈希,给所有字符串编号,最后用并查集判断是否存在欧拉回路。#include#include#include#include#include#includeusing namespace std;const int INF=0x3f3f3f3f;co原创 2016-01-25 15:52:56 · 296 阅读 · 0 评论