数据结构-并查集
-skyline-
这个作者很懒,什么都没留下…
展开
-
luogu P3367 【模板】并查集
#include<bits/stdc++.h> using namespace std; const int N=100005; int pre[N+1]; int findpre(int x){ int a=x; while(x!=pre[x]){ x=pre[x];//向上找 } while(a!=pre[a]){//重复一遍上面的过程 int z=a; ...原创 2019-03-29 22:37:40 · 107 阅读 · 0 评论 -
ACWing836 合并集合(并查集)
题目链接 并查集模板题 贴上我的并查集模板 #include<bits/stdc++.h> const int N=100010; int p[N] ; int find(int x){//返回x的祖宗节点 + 路径压缩 if(p[x]!=x) p[x]=find(p[x]);//如果不是根节点 让父节点等于它的祖宗节点 return p[x] ;//返回祖宗节点 }...原创 2019-08-27 13:29:18 · 138 阅读 · 0 评论 -
ACWing837 模板题 连通块中点的数量 (并查集)
题目链接 并查集操作:合并 查询两元素是否在同一集合 统计联通块大小size 在进行并查集操作的同时维护联通块中节点的数量 初始化 size[i]=1 合并时 在当前新的根节点上 加上这棵树的节点个数 size[find(b)]+=size[find(a)] 模板代码如下 #include<bits/stdc++.h> using namespace std;...原创 2019-08-27 15:26:38 · 165 阅读 · 0 评论 -
食物链(并查集)
题目链接 分析可知,只要知道x和z、y和z两对关系,就能知道x、y、z两两之间的关系。 用一棵树表示节点之间的关系,对于任意两个节点,只要知道每个节点和根节点之间的关系, 就可知道这两个节点之间的关系了。 用 “每个节点到根节点的距离”来表示“每个节点与根节点的关系”,用并查集维护 “每个节点到根节点的距离”这一信息。 设根节点为z,d[i]表示节点i到根节点的距离,分析可知,在模3意义下...原创 2019-08-27 21:27:37 · 167 阅读 · 0 评论 -
Wireless Network POJ - 2236 (并查集)
并查集的题 从被修复的点里,选距离不超过k的,并; 查两个点是否连通 #include<iostream> #include<cstring> using namespace std; typedef long long ll; const int N=1005; int p[N],x[N],y[N]; bool can_use[N]; int find(in...原创 2019-09-10 20:01:38 · 72 阅读 · 0 评论 -
The Suspects POJ - 1611(并查集)
使用并查集的同时记录每一个集合的元素个数size #include<iostream> using namespace std; typedef long long ll; const int N=30005; int size[N],p[N]; int find(int x){ if(p[x]!=x) return p[x]=find(p[x]); return...原创 2019-09-10 20:40:43 · 86 阅读 · 0 评论 -
ACWing 836. 合并集合 (模板题 并查集)
题目链接 对一堆数字进行并查集的基本操作:并+查 #include<bits/stdc++.h> using namespace std; const int N=1e5+5; int p[N]; int find(int x){ if(p[x]!=x) return p[x]=find(p[x]); return p[x];//写 return x 是一样的 }...原创 2019-10-06 05:51:52 · 136 阅读 · 0 评论