
数据结构-并查集
-skyline-
这个作者很懒,什么都没留下…
展开
-
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 · 191 阅读 · 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 · 126 阅读 · 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 · 107 阅读 · 0 评论 -
食物链(并查集)
题目链接分析可知,只要知道x和z、y和z两对关系,就能知道x、y、z两两之间的关系。用一棵树表示节点之间的关系,对于任意两个节点,只要知道每个节点和根节点之间的关系, 就可知道这两个节点之间的关系了。用 “每个节点到根节点的距离”来表示“每个节点与根节点的关系”,用并查集维护 “每个节点到根节点的距离”这一信息。设根节点为z,d[i]表示节点i到根节点的距离,分析可知,在模3意义下...原创 2019-08-27 21:27:37 · 222 阅读 · 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 · 224 阅读 · 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 · 200 阅读 · 0 评论 -
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 · 147 阅读 · 0 评论