并查集
lcxdz
这个作者很懒,什么都没留下…
展开
-
P1196 [NOI2002] 银河英雄传说 (并查集 合并
添加链接描述原创 2022-07-10 11:41:46 · 374 阅读 · 1 评论 -
L3-003 社交集群 (30 分) (并查集
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=1e3+9;vector<int>v[N];int fa[N];int find(int x){ if(x==fa[x])return x; return fa[x]=find(fa[x]);}void merge(int a,int b){ a=find(a),b=find(b); if(a!=b)fa[a]=b;原创 2022-04-21 21:20:15 · 241 阅读 · 0 评论 -
L2-024 部落 (25 分)(并查集
#include<bits/stdc++.h>using namespace std;set<int>s,qun;const int N=1e4+9;int fa[N];int find(int x){ if(x==fa[x])return x; return fa[x]=find(fa[x]);}void merge(int a,int b){ a=find(a),b=find(b); if(a!=b)fa[a]=b;}int ma原创 2022-04-19 16:55:41 · 55 阅读 · 0 评论 -
L2-010 排座位 (25 分)(并查集
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=110;int dist[N][N],fa[N];int find(int x){ if(x==fa[x])return x; return fa[x]=find(fa[x]);}void merge(int a,int b){ a=find(a),b=find(b); if(a!=b)fa[a]=b;}int main(){ std::io原创 2022-04-15 15:30:34 · 91 阅读 · 0 评论 -
L2-007 家庭房产 (25 分)(并查集 模拟
添加链接描述#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 9;int fa[N];struct pp{ vector<int> v;} person[N];struct node{ double num; double sum; double avg, homeavg; int id, flag, numbers;} t[N], res[N];int find(int x原创 2022-04-15 15:26:07 · 136 阅读 · 0 评论 -
周周的舟舟 (并查集 思维
添加链接描述#include<bits/stdc++.h>using namespace std;#define int long longunordered_map<int,int>mp,fa;int find(int x){ if(x==fa[x])return x; return fa[x]=find(fa[x]);}void merge(int a,int b){ fa[b]=a;}double get_dist(double a,d原创 2022-03-20 20:52:20 · 287 阅读 · 2 评论 -
D 上流的聚餐 (并查集 思维
添加链接描述注意先合并人,再合并礼物#include<bits/stdc++.h>using namespace std;const int N=1e5+9;int fa[N];struct node { int a,b,c;}t[N];int find(int x){ if(x==fa[x])return fa[x]; return fa[x]=find(fa[x]);}void merge(int a,int b){ a=find(a),b原创 2022-03-12 20:39:02 · 102 阅读 · 0 评论 -
1107 Social Clusters (30 分) (并查集 看清题意
添加链接描述先模拟一遍 不要想当然#include <bits/stdc++.h>using namespace std;const int N = 1e3 + 9;int fa[N];int find(int x){ if (x == fa[x]) return fa[x]; return fa[x] = find(fa[x]);}void merge(int x,int y){ x=find(x); y=find(y);原创 2022-03-03 17:04:49 · 65 阅读 · 0 评论 -
1158 Telefraud Detection (25 分) (并查集 不看note是sb
添加链接描述//输出每一行所有的人在一个团伙 升序//团伙升序//超过k个短电话 但是不超过20%回电 if互相回电话 就是一个团伙//!!不是小于k的电话是短电话 而是小于等于5分钟的电话是短电话 //!!同一个人多次时间累加//!!不同的人才算//!!求集团要用并查集//!!题目给了按人的顺序//!!不看note是sb#include <bits/stdc++.h>using namespace std;const int N = 1e3 + 9;int st[N原创 2022-02-26 21:01:13 · 240 阅读 · 0 评论 -
1118 Birds in Forest (25 分) (并查集
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=1e4+9;int fa[N];int find(int x){ if(x==fa[x])return fa[x]; return fa[x]=find(fa[x]);}void merge(int x,int y){ x=find(x),y=find(y); if(x!=y)fa[y]=x;}int vis[N],cnt[N原创 2022-02-20 19:24:33 · 62 阅读 · 0 评论 -
1114 Family Property (25 分) (并查集 细节 10/25
添加链接描述编号0000也算vis是人的编号 所以空间要开大先合并所有关联人,然后把编号小的作为根,标记出现的人然后根据id给每个家庭统计,然后再统计人数//家庭人数 平均面积 房产的数量//输出最小的编号(四位) 家庭人数 平均房产 平均面积 //保留三位小数 平均面积下降 如果相同则id上升#include<bits/stdc++.h>using namespace std;const int N=1e3+9,M=1e5+9;int fa[M],vis[M];/原创 2022-02-11 17:40:09 · 171 阅读 · 0 评论 -
1021 Deepest Root (25 分)(思维 二叉树的最深点 dfs 并查集
添加链接描述先通过并查集找到个数然后dfs先通过随意一点找到最深的点得到B 然后在B中选一点找到最深的点得到A 这样A 与B的并集就是答案#include<bits/stdc++.h>using namespace std;const int N=1e4+9;vector<int>v[N];int fa[N];int find(int x){ if(fa[x]==x)return x; else return fa[x]=find(fa[x]);原创 2022-02-06 18:45:52 · 170 阅读 · 0 评论